diff --git a/ethexe/common/src/gear.rs b/ethexe/common/src/gear.rs index efd6eca1e9b..1ce951af427 100644 --- a/ethexe/common/src/gear.rs +++ b/ethexe/common/src/gear.rs @@ -106,7 +106,7 @@ pub struct ProtocolData { pub struct StateTransition { pub actor_id: ActorId, pub new_state_hash: H256, - pub inheritor: ActorId, + pub inheritor: Option, pub value_to_receive: u128, pub value_claims: Vec, pub messages: Vec, diff --git a/ethexe/contracts/src/Mirror.sol b/ethexe/contracts/src/Mirror.sol index 059f24c9465..b1737cdd4d8 100644 --- a/ethexe/contracts/src/Mirror.sol +++ b/ethexe/contracts/src/Mirror.sol @@ -127,8 +127,8 @@ contract Mirror is IMirror { bytes32 valueClaimsHash = _claimValues(_transition.valueClaims); /// @dev Set inheritor if specified. - if (_transition.inheritor != address(0)) { - _setInheritor(_transition.inheritor); + if (_transition.inheritor.length != 0) { + _setInheritor(Gear.decodePackedAddress(_transition.inheritor)); } /// @dev Update the state hash if changed. @@ -232,7 +232,6 @@ contract Mirror is IMirror { return keccak256(valueClaimsBytes); } - // TODO (breathx): optimize inheritor to bytes WITHIN THE PR. function _setInheritor(address _inheritor) private whileActive { /// @dev Set inheritor. inheritor = _inheritor; diff --git a/ethexe/contracts/src/libraries/Gear.sol b/ethexe/contracts/src/libraries/Gear.sol index e183dc9f22b..700426a4a5e 100644 --- a/ethexe/contracts/src/libraries/Gear.sol +++ b/ethexe/contracts/src/libraries/Gear.sol @@ -82,7 +82,8 @@ library Gear { struct StateTransition { address actorId; bytes32 newStateHash; - address inheritor; + /// @dev Must be empty if no inheritor is set, otherwise 20 bytes of an inheritor address. + bytes inheritor; uint128 valueToReceive; ValueClaim[] valueClaims; Message[] messages; @@ -130,6 +131,18 @@ library Gear { return keccak256(abi.encodePacked(codeCommitment.id, codeCommitment.valid)); } + function decodePackedAddress(bytes memory data) internal pure returns (address) { + require(data.length == 20, "Address must be 20 bytes long if exist"); + + address addr; + + assembly ("memory-safe") { + addr := mload(add(data, 20)) + } + + return addr; + } + function defaultComputationSettings() internal pure returns (ComputationSettings memory) { return ComputationSettings(COMPUTATION_THRESHOLD, WVARA_PER_SECOND); } @@ -154,7 +167,7 @@ library Gear { function stateTransitionHash( address actor, bytes32 newStateHash, - address inheritor, + bytes memory inheritor, uint128 valueToReceive, bytes32 valueClaimsHash, bytes32 messagesHashesHash diff --git a/ethexe/contracts/test/Router.t.sol b/ethexe/contracts/test/Router.t.sol index 976ad808068..7d5a2b39807 100644 --- a/ethexe/contracts/test/Router.t.sol +++ b/ethexe/contracts/test/Router.t.sol @@ -118,10 +118,11 @@ contract RouterTest is Test { ); Gear.StateTransition[] memory transitions = new Gear.StateTransition[](1); + transitions[0] = Gear.StateTransition( actorId, // actor id bytes32(uint256(42)), // new state hash - address(0), // inheritor + abi.encodePacked(address(137)), // inheritor uint128(0), // value to receive new Gear.ValueClaim[](0), // value claims messages // messages @@ -142,6 +143,7 @@ contract RouterTest is Test { assertEq(actor.stateHash(), bytes32(uint256(42))); assertEq(actor.nonce(), uint256(1)); + assertEq(actor.inheritor(), address(137)); } /* helper functions */ diff --git a/ethexe/ethereum/Mirror.json b/ethexe/ethereum/Mirror.json index 754512af072..898624f1424 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":"decoder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"executableBalanceTopUp","inputs":[{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"inheritor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_initializer","type":"address","internalType":"address"},{"name":"_decoder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initializer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"performStateTransition","inputs":[{"name":"_transition","type":"tuple","internalType":"struct Gear.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 Gear.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 Gear.Message[]","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 Gear.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]}]}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"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":"nonpayable"},{"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":"nonpayable"},{"type":"function","name":"stateHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"transferLockedValueToInheritor","inputs":[],"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}],"bytecode":{"object":"0x608080604052346015576116bb908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806329336f3914610d3957806336a52a1814610d11578063485cc95514610c7c578063701da98e14610c5f578063704ed54214610b4b57806391d5a64c14610aee5780639cb3300514610ac75780639ce110d714610a9f5780639ed323501461043e578063affed0e014610421578063d5624222146101e0578063e43f3433146100d85763f887ea40146100a8575f80fd5b346100d4575f3660031901126100d45760206100c26111ad565b6040516001600160a01b039091168152f35b5f80fd5b346100d4575f3660031901126100d4576001546001600160a01b0316801561019b5760249060206001600160a01b036101176101126111ad565b611200565b16604051938480926370a0823160e01b82523060048301525afa918215610190575f92610155575b506001600160801b03610153921690611293565b005b91506020823d602011610188575b8161017060209383610f96565b810103126100d4579051906001600160801b0361013f565b3d9150610163565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b346100d45760403660031901126100d4576004356001600160401b0381116100d457610210903690600401610e9d565b906024356001600160801b0381168082036100d45760015461023b906001600160a01b031615610ef2565b60045415801590610402575b15610384576102ee575b6004545f1981146102da576020938160017f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c69301600455604051868101913060601b83526034820152603481526102a9605482610f96565b519020936102cf6001600160a01b036102c061125d565b16946040519384938885611095565b0390a2604051908152f35b634e487b7160e01b5f52601160045260245ffd5b6103356020826102fc6111ad565b6001600160a01b0361030d82611200565b16905f61031861125d565b6040516323b872dd60e01b81529687958694859360048501610fcf565b03925af1801561019057610350915f91610355575b50610ff9565b610251565b610377915060203d60201161037d575b61036f8183610f96565b810190610fb7565b8561034a565b503d610365565b60405162461bcd60e51b815260206004820152604a60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201527f6d657373616765207965743b20616e6420736f75726365206973206e6f7420696064820152693734ba34b0b634bd32b960b11b608482015260a490fd5b5061040b61125d565b6002546001600160a01b03918216911614610247565b346100d4575f3660031901126100d4576020600454604051908152f35b346100d45760203660031901126100d4576004356001600160401b0381116100d45736819003906004810160c06003198401126100d4576104906001600160a01b036104886111ad565b1633146110c3565b61049981611166565b306001600160a01b0390911603610a5a5760a4820135926022190192838112156100d4578201906004820135906001600160401b0382116100d4578160051b360360248401136100d4575f94919360e2193685900301929060605b8688101561070a576024600589901b87010135858112156100d4576004908701019760208901601f198a3603019260c084126100d45760405160a081018181106001600160401b038211176106f6576040528235815261055660408d01610ede565b906020810191825260608d01356001600160401b0381116100d4576020908e010136601f820112156100d45780359061058e82611278565b9161059c6040519384610f96565b80835236602082840101116100d4578f6080905f6020846105d0958260409801838a01378701015283860194855201610eca565b6060840190815297607f1901126100d45760405193604085018581106001600160401b038211176106f65760405260a08f01358086529e60c00135936001600160e01b0319851685036100d4576001986106ad6034605460209996876106d39a8c9a8b809b019182528260808201525197519251965191519063ffffffff60e01b905116908a6040519889958287019b8c526001600160601b03199060601b1660408701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016014810184520182610f96565b5190206040519582879351918291018585015e8201908382015203018084520182610f96565b996106e8576106e19061155f565b01966104f4565b6106f1906113dc565b6106e1565b634e487b7160e01b5f52604160045260245ffd5b60208151910120916084820135908112156100d4578101906004820135926001600160401b0384116100d45760608402360360248401136100d4576060945f5b85811015610899576004606082028601016060601f1982360301126100d45760405190606082018281106001600160401b038211176106f657604052602081013591828152604082019961079d8b610ede565b92836020840152606001926107b184610eca565b6040819401526040519260208401918683526001600160601b03199060601b1660408501526001600160801b03199060801b166054840152604483526107f8606484610f96565b60405192828493516020819201602086015e83019060208201905f8252519283915e016020015f815203601f19810182526108339082610f96565b9861083d90611166565b6108468261117a565b61084f91611293565b6108589061117a565b6040519182526001600160801b0316602082015260407fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578391a160010161074a565b50855160208701206044840192906001600160a01b036108b885611166565b16610988575b6020946108ee60646108e76108e160035497602486013580990361095657611166565b97611166565b920161117a565b9060405194878601966001600160601b03199060601b16875260348601526001600160601b03199060601b1660548501526001600160801b03199060801b166068840152607883015260988201526098815261094b60b882610f96565b519020604051908152f35b886003557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c0809308b6040518b8152a1611166565b61099184611166565b60015495906109a96001600160a01b03881615610ef2565b6001600160a01b03166001600160a01b0319969096168617600155851561019b57602460206001600160a01b036109e16101126111ad565b16604051928380926370a0823160e01b82523060048301525afa908115610190575f91610a27575b506020966001600160801b03610a20921690611293565b94506108be565b90506020813d602011610a52575b81610a4260209383610f96565b810103126100d457516020610a09565b3d9150610a35565b60405162461bcd60e51b815260206004820152601d60248201527f6163746f724964206d757374206265207468697320636f6e74726163740000006044820152606490fd5b346100d4575f3660031901126100d4576002546040516001600160a01b039091168152602090f35b346100d4575f3660031901126100d4575f546040516001600160a01b039091168152602090f35b346100d45760203660031901126100d457610b0c6004541515610f36565b6001600160a01b03610b1c61125d565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a2005b346100d45760203660031901126100d4576004356001600160801b038116908181036100d457600154610b87906001600160a01b031615610ef2565b81610bba575b7f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667602083604051908152a1005b906020610c0292610bc96111ad565b6001600160a01b03610bda82611200565b16905f610be561125d565b6040516323b872dd60e01b81529788958694859360048501610fcf565b03925af190811561019057610c416020927f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667945f91610c485750610ff9565b9150610b8d565b6103779150843d861161037d5761036f8183610f96565b346100d4575f3660031901126100d4576020600354604051908152f35b346100d45760403660031901126100d4576004356001600160a01b038116908190036100d4576024356001600160a01b03811691908290036100d457610ccb6001600160a01b036104886111ad565b60025490610ce26001600160a01b0383161561110f565b5f5491610cf86001600160a01b0384161561110f565b6001600160a01b03199081169190911760025516175f55005b346100d4575f3660031901126100d4576001546040516001600160a01b039091168152602090f35b346100d45760603660031901126100d4576024356001600160401b0381116100d457610d69903690600401610e9d565b90604435916001600160801b0383168084036100d457600154610d95906001600160a01b031615610ef2565b610da26004541515610f36565b610df2575b7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f91610ded6001600160a01b03610ddc61125d565b169460405193849360043585611095565b0390a2005b610e3a91602084610e016111ad565b6001600160a01b03610e1282611200565b16905f610e1d61125d565b6040516323b872dd60e01b81529889958694859360048501610fcf565b03925af1928315610190577fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f93610e77915f91610e7e5750610ff9565b9150610da7565b610e97915060203d60201161037d5761036f8183610f96565b8661034a565b9181601f840112156100d4578235916001600160401b0383116100d457602083818601950101116100d457565b35906001600160801b03821682036100d457565b35906001600160a01b03821682036100d457565b15610ef957565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b15610f3d57565b60405162461bcd60e51b815260206004820152602b60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201526a1b595cdcd859d9481e595d60aa1b6064820152608490fd5b90601f801991011681019081106001600160401b038211176106f657604052565b908160209103126100d4575180151581036100d45790565b6001600160a01b039182168152911660208201526001600160801b03909116604082015260600190565b1561100057565b60405162461bcd60e51b815260206004820152604160248201527f6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f7560448201527f6e74206f662057566172612066726f6d20736f7572636520746f20726f7574656064820152603960f91b608482015260a490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b926040926110bc916001600160801b03939796978652606060208701526060860191611075565b9416910152565b156110ca57565b60405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f742074686520726f7574657200000000000000006044820152606490fd5b1561111657565b60405162461bcd60e51b815260206004820152602260248201527f696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e604482015261636560f01b6064820152608490fd5b356001600160a01b03811681036100d45790565b356001600160801b03811681036100d45790565b908160209103126100d457516001600160a01b03811681036100d45790565b6040516303e21fa960e61b8152602081600481305afa908115610190575f916111d4575090565b6111f6915060203d6020116111f9575b6111ee8183610f96565b81019061118e565b90565b503d6111e4565b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa908115610190575f9161123e575b506001600160a01b031690565b611257915060203d6020116111f9576111ee8183610f96565b5f611231565b5f54336001600160a01b0390911603611274573290565b3390565b6001600160401b0381116106f657601f01601f191660200190565b906001600160801b0316806112a6575050565b60209060446001600160a01b036112be6101126111ad565b60405163a9059cbb60e01b81526001600160a01b0390961660048701526024860193909352849283915f91165af1908115610190575f91611347575b501561130257565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e7366657220575661726100000000000000006044820152606490fd5b611360915060203d60201161037d5761036f8183610f96565b5f6112fa565b903590601e19813603018212156100d457018035906001600160401b0382116100d4576020019181360383136100d457565b356001600160e01b0319811681036100d45790565b3d156113d7573d906113be82611278565b916113cc6040519384610f96565b82523d5f602084013e565b606090565b602081016113e981611166565b9061140160608401926113fb8461117a565b90611293565b5f546001600160a01b0316908161149a575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c69061144f6114476040850185611366565b91909261117a565b60806001600160e01b031961146660a08801611398565b16956001600160801b03611487604051968796606088526060880191611075565b93166020850152013560408301520390a2565b5f916114a68392611166565b826115406114b76040890189611366565b6114c38993929361117a565b6114cf60a08c01611398565b604051639649744960e01b602082019081526001600160a01b03909816602482015260a060448201529485936001600160801b03916115129160c4870191611075565b9216606484015260808c013560848401526001600160e01b03191660a483015203601f198101835282610f96565b51926207a120f161154f6113ad565b5061155b575f80611413565b5050565b5f546001600160a01b0316806115d9575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117736115d46115a160208401611166565b6115ae6040850185611366565b6115bd6060879593950161117a565b9060405194859460018060a01b0316973585611095565b0390a2565b5f809183826115ea60208301611166565b6116686115fa6040850185611366565b92906001600160801b036116536116136060890161117a565b6040516374fad4ef60e01b60208201908152993560248201526001600160a01b03909516604486015260806064860152939586949360a486019190611075565b9116608483015203601f198101835282610f96565b51926207a120f16116776113ad565b50611682575f611570565b5056fea26469706673582212207bd98dde2756a9134e07240455fbe853fc91b36f97f5de661299768fb8022b9264736f6c634300081c0033","sourceMap":"403:9266:157:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806329336f3914610d3957806336a52a1814610d11578063485cc95514610c7c578063701da98e14610c5f578063704ed54214610b4b57806391d5a64c14610aee5780639cb3300514610ac75780639ce110d714610a9f5780639ed323501461043e578063affed0e014610421578063d5624222146101e0578063e43f3433146100d85763f887ea40146100a8575f80fd5b346100d4575f3660031901126100d45760206100c26111ad565b6040516001600160a01b039091168152f35b5f80fd5b346100d4575f3660031901126100d4576001546001600160a01b0316801561019b5760249060206001600160a01b036101176101126111ad565b611200565b16604051938480926370a0823160e01b82523060048301525afa918215610190575f92610155575b506001600160801b03610153921690611293565b005b91506020823d602011610188575b8161017060209383610f96565b810103126100d4579051906001600160801b0361013f565b3d9150610163565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b346100d45760403660031901126100d4576004356001600160401b0381116100d457610210903690600401610e9d565b906024356001600160801b0381168082036100d45760015461023b906001600160a01b031615610ef2565b60045415801590610402575b15610384576102ee575b6004545f1981146102da576020938160017f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c69301600455604051868101913060601b83526034820152603481526102a9605482610f96565b519020936102cf6001600160a01b036102c061125d565b16946040519384938885611095565b0390a2604051908152f35b634e487b7160e01b5f52601160045260245ffd5b6103356020826102fc6111ad565b6001600160a01b0361030d82611200565b16905f61031861125d565b6040516323b872dd60e01b81529687958694859360048501610fcf565b03925af1801561019057610350915f91610355575b50610ff9565b610251565b610377915060203d60201161037d575b61036f8183610f96565b810190610fb7565b8561034a565b503d610365565b60405162461bcd60e51b815260206004820152604a60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201527f6d657373616765207965743b20616e6420736f75726365206973206e6f7420696064820152693734ba34b0b634bd32b960b11b608482015260a490fd5b5061040b61125d565b6002546001600160a01b03918216911614610247565b346100d4575f3660031901126100d4576020600454604051908152f35b346100d45760203660031901126100d4576004356001600160401b0381116100d45736819003906004810160c06003198401126100d4576104906001600160a01b036104886111ad565b1633146110c3565b61049981611166565b306001600160a01b0390911603610a5a5760a4820135926022190192838112156100d4578201906004820135906001600160401b0382116100d4578160051b360360248401136100d4575f94919360e2193685900301929060605b8688101561070a576024600589901b87010135858112156100d4576004908701019760208901601f198a3603019260c084126100d45760405160a081018181106001600160401b038211176106f6576040528235815261055660408d01610ede565b906020810191825260608d01356001600160401b0381116100d4576020908e010136601f820112156100d45780359061058e82611278565b9161059c6040519384610f96565b80835236602082840101116100d4578f6080905f6020846105d0958260409801838a01378701015283860194855201610eca565b6060840190815297607f1901126100d45760405193604085018581106001600160401b038211176106f65760405260a08f01358086529e60c00135936001600160e01b0319851685036100d4576001986106ad6034605460209996876106d39a8c9a8b809b019182528260808201525197519251965191519063ffffffff60e01b905116908a6040519889958287019b8c526001600160601b03199060601b1660408701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016014810184520182610f96565b5190206040519582879351918291018585015e8201908382015203018084520182610f96565b996106e8576106e19061155f565b01966104f4565b6106f1906113dc565b6106e1565b634e487b7160e01b5f52604160045260245ffd5b60208151910120916084820135908112156100d4578101906004820135926001600160401b0384116100d45760608402360360248401136100d4576060945f5b85811015610899576004606082028601016060601f1982360301126100d45760405190606082018281106001600160401b038211176106f657604052602081013591828152604082019961079d8b610ede565b92836020840152606001926107b184610eca565b6040819401526040519260208401918683526001600160601b03199060601b1660408501526001600160801b03199060801b166054840152604483526107f8606484610f96565b60405192828493516020819201602086015e83019060208201905f8252519283915e016020015f815203601f19810182526108339082610f96565b9861083d90611166565b6108468261117a565b61084f91611293565b6108589061117a565b6040519182526001600160801b0316602082015260407fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578391a160010161074a565b50855160208701206044840192906001600160a01b036108b885611166565b16610988575b6020946108ee60646108e76108e160035497602486013580990361095657611166565b97611166565b920161117a565b9060405194878601966001600160601b03199060601b16875260348601526001600160601b03199060601b1660548501526001600160801b03199060801b166068840152607883015260988201526098815261094b60b882610f96565b519020604051908152f35b886003557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c0809308b6040518b8152a1611166565b61099184611166565b60015495906109a96001600160a01b03881615610ef2565b6001600160a01b03166001600160a01b0319969096168617600155851561019b57602460206001600160a01b036109e16101126111ad565b16604051928380926370a0823160e01b82523060048301525afa908115610190575f91610a27575b506020966001600160801b03610a20921690611293565b94506108be565b90506020813d602011610a52575b81610a4260209383610f96565b810103126100d457516020610a09565b3d9150610a35565b60405162461bcd60e51b815260206004820152601d60248201527f6163746f724964206d757374206265207468697320636f6e74726163740000006044820152606490fd5b346100d4575f3660031901126100d4576002546040516001600160a01b039091168152602090f35b346100d4575f3660031901126100d4575f546040516001600160a01b039091168152602090f35b346100d45760203660031901126100d457610b0c6004541515610f36565b6001600160a01b03610b1c61125d565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a2005b346100d45760203660031901126100d4576004356001600160801b038116908181036100d457600154610b87906001600160a01b031615610ef2565b81610bba575b7f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667602083604051908152a1005b906020610c0292610bc96111ad565b6001600160a01b03610bda82611200565b16905f610be561125d565b6040516323b872dd60e01b81529788958694859360048501610fcf565b03925af190811561019057610c416020927f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667945f91610c485750610ff9565b9150610b8d565b6103779150843d861161037d5761036f8183610f96565b346100d4575f3660031901126100d4576020600354604051908152f35b346100d45760403660031901126100d4576004356001600160a01b038116908190036100d4576024356001600160a01b03811691908290036100d457610ccb6001600160a01b036104886111ad565b60025490610ce26001600160a01b0383161561110f565b5f5491610cf86001600160a01b0384161561110f565b6001600160a01b03199081169190911760025516175f55005b346100d4575f3660031901126100d4576001546040516001600160a01b039091168152602090f35b346100d45760603660031901126100d4576024356001600160401b0381116100d457610d69903690600401610e9d565b90604435916001600160801b0383168084036100d457600154610d95906001600160a01b031615610ef2565b610da26004541515610f36565b610df2575b7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f91610ded6001600160a01b03610ddc61125d565b169460405193849360043585611095565b0390a2005b610e3a91602084610e016111ad565b6001600160a01b03610e1282611200565b16905f610e1d61125d565b6040516323b872dd60e01b81529889958694859360048501610fcf565b03925af1928315610190577fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f93610e77915f91610e7e5750610ff9565b9150610da7565b610e97915060203d60201161037d5761036f8183610f96565b8661034a565b9181601f840112156100d4578235916001600160401b0383116100d457602083818601950101116100d457565b35906001600160801b03821682036100d457565b35906001600160a01b03821682036100d457565b15610ef957565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b15610f3d57565b60405162461bcd60e51b815260206004820152602b60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201526a1b595cdcd859d9481e595d60aa1b6064820152608490fd5b90601f801991011681019081106001600160401b038211176106f657604052565b908160209103126100d4575180151581036100d45790565b6001600160a01b039182168152911660208201526001600160801b03909116604082015260600190565b1561100057565b60405162461bcd60e51b815260206004820152604160248201527f6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f7560448201527f6e74206f662057566172612066726f6d20736f7572636520746f20726f7574656064820152603960f91b608482015260a490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b926040926110bc916001600160801b03939796978652606060208701526060860191611075565b9416910152565b156110ca57565b60405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f742074686520726f7574657200000000000000006044820152606490fd5b1561111657565b60405162461bcd60e51b815260206004820152602260248201527f696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e604482015261636560f01b6064820152608490fd5b356001600160a01b03811681036100d45790565b356001600160801b03811681036100d45790565b908160209103126100d457516001600160a01b03811681036100d45790565b6040516303e21fa960e61b8152602081600481305afa908115610190575f916111d4575090565b6111f6915060203d6020116111f9575b6111ee8183610f96565b81019061118e565b90565b503d6111e4565b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa908115610190575f9161123e575b506001600160a01b031690565b611257915060203d6020116111f9576111ee8183610f96565b5f611231565b5f54336001600160a01b0390911603611274573290565b3390565b6001600160401b0381116106f657601f01601f191660200190565b906001600160801b0316806112a6575050565b60209060446001600160a01b036112be6101126111ad565b60405163a9059cbb60e01b81526001600160a01b0390961660048701526024860193909352849283915f91165af1908115610190575f91611347575b501561130257565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e7366657220575661726100000000000000006044820152606490fd5b611360915060203d60201161037d5761036f8183610f96565b5f6112fa565b903590601e19813603018212156100d457018035906001600160401b0382116100d4576020019181360383136100d457565b356001600160e01b0319811681036100d45790565b3d156113d7573d906113be82611278565b916113cc6040519384610f96565b82523d5f602084013e565b606090565b602081016113e981611166565b9061140160608401926113fb8461117a565b90611293565b5f546001600160a01b0316908161149a575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c69061144f6114476040850185611366565b91909261117a565b60806001600160e01b031961146660a08801611398565b16956001600160801b03611487604051968796606088526060880191611075565b93166020850152013560408301520390a2565b5f916114a68392611166565b826115406114b76040890189611366565b6114c38993929361117a565b6114cf60a08c01611398565b604051639649744960e01b602082019081526001600160a01b03909816602482015260a060448201529485936001600160801b03916115129160c4870191611075565b9216606484015260808c013560848401526001600160e01b03191660a483015203601f198101835282610f96565b51926207a120f161154f6113ad565b5061155b575f80611413565b5050565b5f546001600160a01b0316806115d9575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117736115d46115a160208401611166565b6115ae6040850185611366565b6115bd6060879593950161117a565b9060405194859460018060a01b0316973585611095565b0390a2565b5f809183826115ea60208301611166565b6116686115fa6040850185611366565b92906001600160801b036116536116136060890161117a565b6040516374fad4ef60e01b60208201908152993560248201526001600160a01b03909516604486015260806064860152939586949360a486019190611075565b9116608483015203601f198101835282610f96565b51926207a120f16116776113ad565b50611682575f611570565b5056fea26469706673582212207bd98dde2756a9134e07240455fbe853fc91b36f97f5de661299768fb8022b9264736f6c634300081c0033","sourceMap":"403:9266:157:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;-1:-1:-1;;;;;403:9266:157;1633:23;;403:9266;;3811:41;;403:9266;-1:-1:-1;;;;;3811:16:157;3818:8;;:::i;:::-;3811:16;:::i;:::-;403:9266;;;;;;;;;;3811:41;;3846:4;403:9266;3811:41;;403:9266;3811:41;;;;;;;403:9266;3811:41;;;403:9266;;-1:-1:-1;;;;;3888:16:157;403:9266;;3888:16;;:::i;:::-;403:9266;3811:41;;;403:9266;3811:41;;403:9266;3811:41;;;;;;403:9266;3811:41;;;:::i;:::-;;;403:9266;;;;;;;-1:-1:-1;;;;;3811:41:157;;;;;-1:-1:-1;3811:41:157;;;403:9266;;;;;;;;;;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;2492:57;;-1:-1:-1;;;;;403:9266:157;2500:23;2492:57;:::i;:::-;403:9266;;2204:9;;;:37;;;403:9266;;;;1103:259;;403:9266;;;-1:-1:-1;;403:9266:157;;;;;;;2500:9;3049:57;403:9266;;;;;;2992:40;;;3017:4;;403:9266;;;;;;;;;2992:40;;;;;;:::i;:::-;403:9266;2982:51;;;3049:57;-1:-1:-1;;;;;3078:9:157;;:::i;:::-;403:9266;;;;3049:57;;;;;;:::i;:::-;;;;403:9266;;;;;;;;;;;;;;;;;;1103:259;1191:61;403:9266;1154:8;;;:::i;:::-;-1:-1:-1;;;;;1191:18:157;;;:::i;:::-;403:9266;1223:9;403:9266;1223:9;;:::i;:::-;403:9266;;-1:-1:-1;;;1191:61:157;;403:9266;;;;;;;;1191:61;;;:::i;:::-;;;;;;;;;1266:85;1191:61;403:9266;1191:61;;;1103:259;1266:85;;:::i;:::-;1103:259;;1191:61;;;;403:9266;1191:61;403:9266;1191:61;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;403:9266;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:157;;;;;;;2204:37;2217:9;;;:::i;:::-;2230:11;403:9266;-1:-1:-1;;;;;403:9266:157;;;;;2217:24;2204:37;;403:9266;;;;;;-1:-1:-1;;403:9266:157;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;860:59;-1:-1:-1;;;;;882:8:157;;:::i;:::-;403:9266;868:10;:22;860:59;:::i;:::-;4564:19;;;:::i;:::-;4595:4;-1:-1:-1;;;;;403:9266:157;;;4564:36;403:9266;;4733:20;;;403:9266;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;;5828:27;;-1:-1:-1;;403:9266:157;;;;;;5828:27;403:9266;5908:3;5886:20;;;;;;403:9266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4733:20;403:9266;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;4733:20;403:9266;;;;;;;;;;;-1:-1:-1;;;;;;403:9266:157;;;;;;;;3679:243:161;403:9266:157;;;;;;;;;;;;;;;;;;;;;;;;;3778:15:161;;403:9266:157;;;;;;;;;;;;;;;3679:243:161;;;;;;403:9266:157;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;;3679:243:161;;;;;;;;;;:::i;:::-;403:9266:157;3656:276:161;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6144:28;;;6214:7;;;:::i;:::-;403:9266;5871:13;;;6140:162;6279:7;;;:::i;:::-;6140:162;;403:9266;;;;;;;;;;;;5886:20;403:9266;;;;;6329:25;4848:23;;;;403:9266;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;8077:13;403:9266;8112:3;8092:18;;;;;;403:9266;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;5709:65:161;403:9266:157;5709:65:161;;403:9266:157;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;5709:65:161;;;;;;:::i;:::-;403:9266:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8297:17;;;;:::i;:::-;8316:11;;;:::i;:::-;;;;:::i;:::-;8378;;;:::i;:::-;403:9266;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;8348:42;;;403:9266;;8077:13;;8092:18;-1:-1:-1;403:9266:157;;;;;8418:27;403:9266;4932:21;;;;-1:-1:-1;;;;;4932:21:157;;;:::i;:::-;403:9266;4928:102;;8072:329;403:9266;;5422:26;5709:65:161;5387:21:157;5316:19;5095:9;403:9266;5108:24;;;;403:9266;5095:37;;;5091:110;;5316:19;:::i;:::-;5387:21;;:::i;:::-;5422:26;;;:::i;:::-;403:9266;;;4408:101:161;;;;403:9266:157;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;;;4408:101:161;;;;;;:::i;:::-;403:9266:157;4385:134:161;;403:9266:157;;;;;;5091:110;403:9266;5095:9;403:9266;8978:23;403:9266;;;;;;8978:23;5316:19;:::i;4928:102::-;4997:21;;;:::i;:::-;403:9266;;;;2492:57;-1:-1:-1;;;;;403:9266:157;;2500:23;2492:57;:::i;:::-;-1:-1:-1;;;;;403:9266:157;-1:-1:-1;;;;;;403:9266:157;;;;;;;;1633:23;;403:9266;;3811:41;403:9266;-1:-1:-1;;;;;3811:16:157;3818:8;;:::i;3811:16::-;403:9266;;;;;;;;;;3811:41;;4595:4;403:9266;3811:41;;403:9266;3811:41;;;;;;;403:9266;3811:41;;;4928:102;403:9266;;;-1:-1:-1;;;;;3888:16:157;403:9266;;3888:16;;:::i;:::-;4928:102;;;;3811:41;;;403:9266;3811:41;;403:9266;3811:41;;;;;;403:9266;3811:41;;;:::i;:::-;;;403:9266;;;;;;3811:41;;;;;-1:-1:-1;3811:41:157;;403:9266;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;664:26;403:9266;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;1874:65;403:9266;;1882:9;;1874:65;:::i;:::-;-1:-1:-1;;;;;3536:9:157;;:::i;:::-;403:9266;3501:45;403:9266;;;;;;;3501:45;403:9266;;;;;;;-1:-1:-1;;403:9266:157;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;2492:57;;-1:-1:-1;;;;;403:9266:157;2500:23;2492:57;:::i;:::-;1107:10;1103:259;;403:9266;3667:39;403:9266;;;;;;;3667:39;403:9266;1103:259;1154:8;403:9266;1191:61;1154:8;;;:::i;:::-;-1:-1:-1;;;;;1191:18:157;;;:::i;:::-;403:9266;1223:9;403:9266;1223:9;;:::i;:::-;403:9266;;-1:-1:-1;;;1191:61:157;;403:9266;;;;;;;;1191:61;;;:::i;:::-;;;;;;;;;;1266:85;403:9266;1191:61;3667:39;1191:61;403:9266;1191:61;;;1266:85;;:::i;:::-;1103:259;;;;1191:61;;;;;;;;;;;;;;:::i;403:9266::-;;;;;;-1:-1:-1;;403:9266:157;;;;;696:24;403:9266;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;860:59;-1:-1:-1;;;;;882:8:157;;:::i;860:59::-;4066:11;403:9266;;4058:72;-1:-1:-1;;;;;403:9266:157;;4066:25;4058:72;:::i;:::-;403:9266;;;4140:68;-1:-1:-1;;;;;403:9266:157;;4148:21;4140:68;:::i;:::-;-1:-1:-1;;;;;;403:9266:157;;;;;;;4066:11;403:9266;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;2492:57;;-1:-1:-1;;;;;403:9266:157;2500:23;2492:57;:::i;:::-;1874:65;403:9266;;1882:9;;1874:65;:::i;:::-;1103:259;;403:9266;3338:63;;;-1:-1:-1;;;;;3373:9:157;;:::i;:::-;403:9266;;;;;;;;;3338:63;;:::i;:::-;;;;403:9266;1103:259;1191:61;1154:8;403:9266;1154:8;;;:::i;:::-;-1:-1:-1;;;;;1191:18:157;;;:::i;:::-;403:9266;1223:9;403:9266;1223:9;;:::i;:::-;403:9266;;-1:-1:-1;;;1191:61:157;;403:9266;;;;;;;;1191:61;;;:::i;:::-;;;;;;;;;;3338:63;1191:61;1266:85;1191:61;403:9266;1191:61;;;1266:85;;:::i;:::-;1103:259;;;;1191:61;;;;403:9266;1191:61;403:9266;1191:61;;;;;;;:::i;:::-;;;;403:9266;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;403:9266:157;;;;;;:::o;:::-;;;-1:-1:-1;;;;;403:9266:157;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;;;;-1:-1:-1;403:9266:157;;;;;;;;-1:-1:-1;;403:9266:157;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:157;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;:::o;:::-;;-1:-1:-1;;;;;403:9266:157;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;:::o;2606:108::-;403:9266;;-1:-1:-1;;;2671:36:157;;;403:9266;2671:36;403:9266;2692:4;2671:36;;;;;;;-1:-1:-1;2671:36:157;;;2664:43;2606:108;:::o;2671:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;2606:108;:::o;2671:36::-;;;;;9048:182;403:9266;;-1:-1:-1;;;9150:33:157;;403:9266;9150:33;;403:9266;;9150:33;;403:9266;;-1:-1:-1;;;;;403:9266:157;9150:33;;;;;;;-1:-1:-1;9150:33:157;;;9048:182;-1:-1:-1;;;;;;403:9266:157;;9048:182::o;9150:33::-;;;;;;;;;;;;;;:::i;:::-;;;;9236:182;403:9266;;9300:10;-1:-1:-1;;;;;403:9266:157;;;9300:21;403:9266;;9344:9;9337:16;:::o;9296:116::-;9300:10;9384:17;:::o;403:9266::-;-1:-1:-1;;;;;403:9266:157;;;;;;-1:-1:-1;;403:9266:157;;;;:::o;9424:243::-;;-1:-1:-1;;;;;403:9266:157;9506:10;9502:159;;9424:243;;:::o;9502:159::-;403:9266;;9547:45;-1:-1:-1;;;;;9547:16:157;9554:8;;:::i;9547:16::-;403:9266;;-1:-1:-1;;;9547:45:157;;-1:-1:-1;;;;;403:9266:157;;;9547:45;;;403:9266;;;;;;;;;;;;9515:1;;403:9266;9547:45;;;;;;;9515:1;9547:45;;;9502:159;403:9266;;;;9424:243::o;403:9266::-;;;-1:-1:-1;;;403:9266:157;;;9547:45;403:9266;;;;;;;;;9547:45;403:9266;;;;;;9547:45;;;;403:9266;9547:45;403:9266;9547:45;;;;;;;:::i;:::-;;;;403:9266;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;;403:9266:157;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;403:9266:157;;;;:::o;:::-;;;:::o;7148:784::-;7240:20;;;;;;:::i;:::-;7262:14;;;;;;;;;:::i;:::-;;;:::i;:::-;7292:7;403:9266;-1:-1:-1;;;;;403:9266:157;;;7288:529;;7148:784;7838:16;;7832:93;7838:16;7856:14;7838:16;;;;;;:::i;:::-;7856:14;;;;:::i;:::-;7872:21;-1:-1:-1;;;;;;7898:26:157;;;;;:::i;:::-;403:9266;;-1:-1:-1;;;;;403:9266:157;7838:16;403:9266;;;;7262:14;403:9266;;7262:14;403:9266;;;;:::i;:::-;;;7240:20;403:9266;;;7872:21;403:9266;7838:16;403:9266;;;7832:93;;;7148:784::o;7288:529::-;7292:7;7446:20;;;;;:::i;:::-;7484:16;7353:279;7484:16;;;;;;:::i;:::-;7518:14;;;;;;:::i;:::-;7592:26;;;;;:::i;:::-;7484:16;403:9266;-1:-1:-1;;;7240:20:157;7353:279;;;;;-1:-1:-1;;;;;403:9266:157;;;7353:279;;;403:9266;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;:::i;:::-;;;;;;;7550:21;;;403:9266;;;;;-1:-1:-1;;;;;;403:9266:157;;;;;7353:279;-1:-1:-1;;7353:279:157;;;;;;:::i;:::-;7704:36;;7722:7;7704:36;;;:::i;:::-;;7755:52;;7288:529;;;;7755:52;7786:7;;:::o;6420:653::-;6505:7;403:9266;-1:-1:-1;;;;;403:9266:157;;6501:474;;6420:653;7011:20;6990:76;;7011:20;;;;;:::i;:::-;7033:16;;;;;;:::i;:::-;7051:14;;;;;;;;:::i;:::-;403:9266;7033:16;403:9266;;;;;;;;;;;;6990:76;;:::i;:::-;;;;6420:653::o;6501:474::-;6505:7;6690:20;;;;;;;;;:::i;:::-;6566:224;6728:16;;;;;;:::i;:::-;6762:14;;-1:-1:-1;;;;;403:9266:157;6762:14;;;;;:::i;:::-;6728:16;403:9266;-1:-1:-1;;;6690:20:157;6566:224;;;;;403:9266;;6566:224;;;403:9266;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;6566:224;403:9266;:::i;:::-;;;;;;;6566:224;403:9266;;6566:224;;;;;;:::i;:::-;6862:36;;6880:7;6862:36;;;:::i;:::-;;6913:52;;6501:474;;;6913:52;6944:7;:::o","linkReferences":{}},"methodIdentifiers":{"claimValue(bytes32)":"91d5a64c","decoder()":"9cb33005","executableBalanceTopUp(uint128)":"704ed542","inheritor()":"36a52a18","initialize(address,address)":"485cc955","initializer()":"9ce110d7","nonce()":"affed0e0","performStateTransition((address,bytes32,address,uint128,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4))[]))":"9ed32350","router()":"f887ea40","sendMessage(bytes,uint128)":"d5624222","sendReply(bytes32,bytes,uint128)":"29336f39","stateHash()":"701da98e","transferLockedValueToInheritor()":"e43f3433"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[],\"name\":\"decoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceTopUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inheritor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_initializer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_decoder\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"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 Gear.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 Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition\",\"name\":\"_transition\",\"type\":\"tuple\"}],\"name\":\"performStateTransition\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":\"nonpayable\",\"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\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferLockedValueToInheritor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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\":{},\"stateVariables\":{\"initializer\":{\"details\":\"This nonce is the source for message ids unique generations. Must be bumped on each send. Zeroed nonce is always represent init message by eligible account.\"}},\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"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\"]},\"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/IMirror.sol\":{\"keccak256\":\"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6\",\"dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm\"]},\"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\":\"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17\",\"dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Mirror.sol\":{\"keccak256\":\"0x494ced7f53fdc22cf426db303e63345a1022aff1c2ddcb378a5cfd8a1fb8f2d9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://11392c8f9e2a34094e8ace4f34fadce3f1d6a53679797e69d251fead6383969f\",\"dweb:/ipfs/QmRsY5xdxWgtmHArNQqBScABFyMehg1HcoeTjjeysazv1E\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec\",\"dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"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":[],"stateMutability":"view","type":"function","name":"decoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"executableBalanceTopUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"inheritor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_initializer","type":"address"},{"internalType":"address","name":"_decoder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"initializer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct Gear.StateTransition","name":"_transition","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 Gear.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 Gear.Message[]","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 Gear.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]}]}]}],"stateMutability":"nonpayable","type":"function","name":"performStateTransition","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"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":"nonpayable","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":"nonpayable","type":"function","name":"sendReply"},{"inputs":[],"stateMutability":"view","type":"function","name":"stateHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"transferLockedValueToInheritor"}],"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/","symbiotic-core/=lib/symbiotic-core/"],"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"},"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/IMirror.sol":{"keccak256":"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e","urls":["bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6","dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm"],"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":"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8","urls":["bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17","dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Mirror.sol":{"keccak256":"0x494ced7f53fdc22cf426db303e63345a1022aff1c2ddcb378a5cfd8a1fb8f2d9","urls":["bzz-raw://11392c8f9e2a34094e8ace4f34fadce3f1d6a53679797e69d251fead6383969f","dweb:/ipfs/QmRsY5xdxWgtmHArNQqBScABFyMehg1HcoeTjjeysazv1E"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc","urls":["bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec","dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[{"astId":74605,"contract":"src/Mirror.sol:Mirror","label":"decoder","offset":0,"slot":"0","type":"t_address"},{"astId":74607,"contract":"src/Mirror.sol:Mirror","label":"inheritor","offset":0,"slot":"1","type":"t_address"},{"astId":74610,"contract":"src/Mirror.sol:Mirror","label":"initializer","offset":0,"slot":"2","type":"t_address"},{"astId":74612,"contract":"src/Mirror.sol:Mirror","label":"stateHash","offset":0,"slot":"3","type":"t_bytes32"},{"astId":74614,"contract":"src/Mirror.sol:Mirror","label":"nonce","offset":0,"slot":"4","type":"t_uint256"}],"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":75332,"exportedSymbols":{"Clones":[41840],"Gear":[77275],"IMirror":[73559],"IMirrorDecoder":[73594],"IMirrorProxy":[73602],"IRouter":[73844],"IWrappedVara":[73855],"Mirror":[75331]},"nodeType":"SourceUnit","src":"39:9631:157","nodes":[{"id":74587,"nodeType":"PragmaDirective","src":"39:24:157","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":74589,"nodeType":"ImportDirective","src":"65:48:157","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":75332,"sourceUnit":73603,"symbolAliases":[{"foreign":{"id":74588,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73602,"src":"73:12:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74591,"nodeType":"ImportDirective","src":"114:38:157","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":75332,"sourceUnit":73560,"symbolAliases":[{"foreign":{"id":74590,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73559,"src":"122:7:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74593,"nodeType":"ImportDirective","src":"153:38:157","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":75332,"sourceUnit":73845,"symbolAliases":[{"foreign":{"id":74592,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73844,"src":"161:7:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74595,"nodeType":"ImportDirective","src":"192:48:157","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":75332,"sourceUnit":73856,"symbolAliases":[{"foreign":{"id":74594,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73855,"src":"200:12:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74597,"nodeType":"ImportDirective","src":"241:52:157","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":75332,"sourceUnit":73595,"symbolAliases":[{"foreign":{"id":74596,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73594,"src":"249:14:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74599,"nodeType":"ImportDirective","src":"294:64:157","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":75332,"sourceUnit":41841,"symbolAliases":[{"foreign":{"id":74598,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41840,"src":"302:6:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74601,"nodeType":"ImportDirective","src":"359:42:157","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"./libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":75332,"sourceUnit":77276,"symbolAliases":[{"foreign":{"id":74600,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"367:4:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75331,"nodeType":"ContractDefinition","src":"403:9266:157","nodes":[{"id":74605,"nodeType":"VariableDeclaration","src":"436:22:157","nodes":[],"baseFunctions":[73512],"constant":false,"functionSelector":"9cb33005","mutability":"mutable","name":"decoder","nameLocation":"451:7:157","scope":75331,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74604,"name":"address","nodeType":"ElementaryTypeName","src":"436:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":74607,"nodeType":"VariableDeclaration","src":"464:24:157","nodes":[],"baseFunctions":[73497],"constant":false,"functionSelector":"36a52a18","mutability":"mutable","name":"inheritor","nameLocation":"479:9:157","scope":75331,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74606,"name":"address","nodeType":"ElementaryTypeName","src":"464:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":74610,"nodeType":"VariableDeclaration","src":"664:26:157","nodes":[],"constant":false,"documentation":{"id":74608,"nodeType":"StructuredDocumentation","src":"494:165:157","text":"@dev This nonce is the source for message ids unique generations. Must be bumped on each send. Zeroed nonce is always represent init message by eligible account."},"functionSelector":"9ce110d7","mutability":"mutable","name":"initializer","nameLocation":"679:11:157","scope":75331,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74609,"name":"address","nodeType":"ElementaryTypeName","src":"664:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":74612,"nodeType":"VariableDeclaration","src":"696:24:157","nodes":[],"baseFunctions":[73492],"constant":false,"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"711:9:157","scope":75331,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74611,"name":"bytes32","nodeType":"ElementaryTypeName","src":"696:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":74614,"nodeType":"VariableDeclaration","src":"726:20:157","nodes":[],"baseFunctions":[73502],"constant":false,"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"741:5:157","scope":75331,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74613,"name":"uint256","nodeType":"ElementaryTypeName","src":"726:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":74628,"nodeType":"ModifierDefinition","src":"828:109:157","nodes":[],"body":{"id":74627,"nodeType":"Block","src":"850:87:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74618,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"868:3:157","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"872:6:157","memberName":"sender","nodeType":"MemberAccess","src":"868:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":74620,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"882:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"882:8:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"868:22:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"63616c6c6572206973206e6f742074686520726f75746572","id":74623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"892:26:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_198bece7548b89eb58a1e57e2a5c5ba93b63a70943a48214dc1508db322b92d3","typeString":"literal_string \"caller is not the router\""},"value":"caller is not the router"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_198bece7548b89eb58a1e57e2a5c5ba93b63a70943a48214dc1508db322b92d3","typeString":"literal_string \"caller is not the router\""}],"id":74617,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"860:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"860:59:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74625,"nodeType":"ExpressionStatement","src":"860:59:157"},{"id":74626,"nodeType":"PlaceholderStatement","src":"929:1:157"}]},"documentation":{"id":74615,"nodeType":"StructuredDocumentation","src":"753:70:157","text":"@dev Only the router can call functions marked with this modifier."},"name":"onlyRouter","nameLocation":"837:10:157","parameters":{"id":74616,"nodeType":"ParameterList","parameters":[],"src":"847:2:157"},"virtual":false,"visibility":"internal"},{"id":74662,"nodeType":"ModifierDefinition","src":"1053:326:157","nodes":[],"body":{"id":74661,"nodeType":"Block","src":"1093:286:157","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":74635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74633,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74631,"src":"1107:5:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":74634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1116:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1107:10:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74659,"nodeType":"IfStatement","src":"1103:259:157","trueBody":{"id":74658,"nodeType":"Block","src":"1119:243:157","statements":[{"assignments":[74637],"declarations":[{"constant":false,"id":74637,"mutability":"mutable","name":"routerAddr","nameLocation":"1141:10:157","nodeType":"VariableDeclaration","scope":74658,"src":"1133:18:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74636,"name":"address","nodeType":"ElementaryTypeName","src":"1133:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":74640,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":74638,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"1154:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1154:8:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1133:29:157"},{"assignments":[74642],"declarations":[{"constant":false,"id":74642,"mutability":"mutable","name":"success","nameLocation":"1181:7:157","nodeType":"VariableDeclaration","scope":74658,"src":"1176:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":74641,"name":"bool","nodeType":"ElementaryTypeName","src":"1176:4:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":74652,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":74647,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75301,"src":"1223:7:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1223:9:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74649,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74637,"src":"1234:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74650,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74631,"src":"1246:5:157","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":[{"id":74644,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74637,"src":"1198:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74643,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75282,"src":"1191:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$73855_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":74645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1191:18:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73855","typeString":"contract IWrappedVara"}},"id":74646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1210:12:157","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":43139,"src":"1191:31:157","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":74651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1191:61:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"1176:76:157"},{"expression":{"arguments":[{"id":74654,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74642,"src":"1274:7:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f756e74206f662057566172612066726f6d20736f7572636520746f20726f75746572","id":74655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1283:67:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_89834f4f5b676caeda9aeacc6e70651fe8c874cb9d7867ce1578400f765c69dd","typeString":"literal_string \"failed to transfer non-zero amount of WVara from source to router\""},"value":"failed to transfer non-zero amount of WVara from source to router"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_89834f4f5b676caeda9aeacc6e70651fe8c874cb9d7867ce1578400f765c69dd","typeString":"literal_string \"failed to transfer non-zero amount of WVara from source to router\""}],"id":74653,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1266:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1266:85:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74657,"nodeType":"ExpressionStatement","src":"1266:85:157"}]}},{"id":74660,"nodeType":"PlaceholderStatement","src":"1371:1:157"}]},"documentation":{"id":74629,"nodeType":"StructuredDocumentation","src":"943:105:157","text":"@dev Non-zero value must be transferred from source to router in functions marked with this modifier."},"name":"retrievingValue","nameLocation":"1062:15:157","parameters":{"id":74632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74631,"mutability":"mutable","name":"value","nameLocation":"1086:5:157","nodeType":"VariableDeclaration","scope":74662,"src":"1078:13:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":74630,"name":"uint128","nodeType":"ElementaryTypeName","src":"1078:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1077:15:157"},"virtual":false,"visibility":"internal"},{"id":74677,"nodeType":"ModifierDefinition","src":"1589:115:157","nodes":[],"body":{"id":74676,"nodeType":"Block","src":"1615:89:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74666,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74607,"src":"1633:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":74669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1654:1:157","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":74668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1646:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74667,"name":"address","nodeType":"ElementaryTypeName","src":"1646:7:157","typeDescriptions":{}}},"id":74670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1646:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1633:23:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973206e6f74207465726d696e61746564","id":74672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1658:27:157","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":74665,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1625:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1625:61:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74674,"nodeType":"ExpressionStatement","src":"1625:61:157"},{"id":74675,"nodeType":"PlaceholderStatement","src":"1696:1:157"}]},"documentation":{"id":74663,"nodeType":"StructuredDocumentation","src":"1488:96:157","text":"@dev Functions marked with this modifier can be called only after the program is terminated."},"name":"whenTerminated","nameLocation":"1598:14:157","parameters":{"id":74664,"nodeType":"ParameterList","parameters":[],"src":"1612:2:157"},"virtual":false,"visibility":"internal"},{"id":74689,"nodeType":"ModifierDefinition","src":"1830:127:157","nodes":[],"body":{"id":74688,"nodeType":"Block","src":"1864:93:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74681,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74614,"src":"1882:5:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":74682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1890:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1882:9:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a6572206861736e2774206372656174656420696e6974206d65737361676520796574","id":74684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1893:45:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_65d3f165ecb53a71c4baab7e3c64d50628aa4b4da22aa56421c8898d77a0af21","typeString":"literal_string \"initializer hasn't created init message yet\""},"value":"initializer hasn't created init message yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_65d3f165ecb53a71c4baab7e3c64d50628aa4b4da22aa56421c8898d77a0af21","typeString":"literal_string \"initializer hasn't created init message yet\""}],"id":74680,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1874:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1874:65:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74686,"nodeType":"ExpressionStatement","src":"1874:65:157"},{"id":74687,"nodeType":"PlaceholderStatement","src":"1949:1:157"}]},"documentation":{"id":74678,"nodeType":"StructuredDocumentation","src":"1710:115:157","text":"@dev Functions marked with this modifier can be called only after the initializer has created the init message."},"name":"whenInitMessageCreated","nameLocation":"1839:22:157","parameters":{"id":74679,"nodeType":"ParameterList","parameters":[],"src":"1861:2:157"},"virtual":false,"visibility":"internal"},{"id":74706,"nodeType":"ModifierDefinition","src":"2122:237:157","nodes":[],"body":{"id":74705,"nodeType":"Block","src":"2173:186:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":74700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74693,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74614,"src":"2204:5:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":74694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2212:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2204:9:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":74696,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75301,"src":"2217:7:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2217:9:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":74698,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74610,"src":"2230:11:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2217:24:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2204:37:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a6572206861736e2774206372656174656420696e6974206d657373616765207965743b20616e6420736f75726365206973206e6f7420696e697469616c697a6572","id":74701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2255:76:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_30f0ecacdc4f043fe4536cec8ec5dce9f84d0c03c073a67b932c97032eee9e08","typeString":"literal_string \"initializer hasn't created init message yet; and source is not initializer\""},"value":"initializer hasn't created init message yet; and source is not initializer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30f0ecacdc4f043fe4536cec8ec5dce9f84d0c03c073a67b932c97032eee9e08","typeString":"literal_string \"initializer hasn't created init message yet; and source is not initializer\""}],"id":74692,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2183:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2183:158:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74703,"nodeType":"ExpressionStatement","src":"2183:158:157"},{"id":74704,"nodeType":"PlaceholderStatement","src":"2351:1:157"}]},"documentation":{"id":74690,"nodeType":"StructuredDocumentation","src":"1963:154:157","text":"@dev Functions marked with this modifier can be called only after the initializer has created the init message or from the initializer (first access)."},"name":"whenInitMessageCreatedOrFromInitializer","nameLocation":"2131:39:157","parameters":{"id":74691,"nodeType":"ParameterList","parameters":[],"src":"2170:2:157"},"virtual":false,"visibility":"internal"},{"id":74721,"nodeType":"ModifierDefinition","src":"2459:108:157","nodes":[],"body":{"id":74720,"nodeType":"Block","src":"2482:85:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74710,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74607,"src":"2500:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":74713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2521:1:157","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":74712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2513:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74711,"name":"address","nodeType":"ElementaryTypeName","src":"2513:7:157","typeDescriptions":{}}},"id":74714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2513:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2500:23:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973207465726d696e61746564","id":74716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2525:23:157","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":74709,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2492:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2492:57:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74718,"nodeType":"ExpressionStatement","src":"2492:57:157"},{"id":74719,"nodeType":"PlaceholderStatement","src":"2559:1:157"}]},"documentation":{"id":74707,"nodeType":"StructuredDocumentation","src":"2365:89:157","text":"@dev Functions marked with this modifier can be called only if the program is active."},"name":"whileActive","nameLocation":"2468:11:157","parameters":{"id":74708,"nodeType":"ParameterList","parameters":[],"src":"2479:2:157"},"virtual":false,"visibility":"internal"},{"id":74736,"nodeType":"FunctionDefinition","src":"2606:108:157","nodes":[],"body":{"id":74735,"nodeType":"Block","src":"2654:60:157","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":74729,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2692:4:157","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}],"id":74728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2684:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74727,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:157","typeDescriptions":{}}},"id":74730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2684:13:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74726,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73602,"src":"2671:12:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorProxy_$73602_$","typeString":"type(contract IMirrorProxy)"}},"id":74731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2671:27:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorProxy_$73602","typeString":"contract IMirrorProxy"}},"id":74732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2699:6:157","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73601,"src":"2671:34:157","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":74733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2671:36:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":74725,"id":74734,"nodeType":"Return","src":"2664:43:157"}]},"baseFunctions":[73507],"functionSelector":"f887ea40","implemented":true,"kind":"function","modifiers":[],"name":"router","nameLocation":"2615:6:157","parameters":{"id":74722,"nodeType":"ParameterList","parameters":[],"src":"2621:2:157"},"returnParameters":{"id":74725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74724,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74736,"src":"2645:7:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74723,"name":"address","nodeType":"ElementaryTypeName","src":"2645:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2644:9:157"},"scope":75331,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":74777,"nodeType":"FunctionDefinition","src":"2750:383:157","nodes":[],"body":{"id":74776,"nodeType":"Block","src":"2959:174:157","nodes":[],"statements":[{"assignments":[74753],"declarations":[{"constant":false,"id":74753,"mutability":"mutable","name":"id","nameLocation":"2977:2:157","nodeType":"VariableDeclaration","scope":74776,"src":"2969:10:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74752,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2969:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":74765,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":74759,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3017:4:157","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}],"id":74758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3009:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74757,"name":"address","nodeType":"ElementaryTypeName","src":"3009:7:157","typeDescriptions":{}}},"id":74760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3009:13:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3024:7:157","subExpression":{"id":74761,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74614,"src":"3024:5:157","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":74755,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2992:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":74756,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2996:12:157","memberName":"encodePacked","nodeType":"MemberAccess","src":"2992:16:157","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":74763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2992:40:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":74754,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2982:9:157","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":74764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2982:51:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2969:64:157"},{"eventCall":{"arguments":[{"id":74767,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74753,"src":"3074:2:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":74768,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75301,"src":"3078:7:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3078:9:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74770,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74738,"src":"3089:8:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":74771,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74740,"src":"3099:6:157","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":74766,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73435,"src":"3049:24:157","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":74772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3049:57:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74773,"nodeType":"EmitStatement","src":"3044:62:157"},{"expression":{"id":74774,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74753,"src":"3124:2:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":74751,"id":74775,"nodeType":"Return","src":"3117:9:157"}]},"baseFunctions":[73521],"functionSelector":"d5624222","implemented":true,"kind":"function","modifiers":[{"id":74743,"kind":"modifierInvocation","modifierName":{"id":74742,"name":"whileActive","nameLocations":["2837:11:157"],"nodeType":"IdentifierPath","referencedDeclaration":74721,"src":"2837:11:157"},"nodeType":"ModifierInvocation","src":"2837:11:157"},{"id":74745,"kind":"modifierInvocation","modifierName":{"id":74744,"name":"whenInitMessageCreatedOrFromInitializer","nameLocations":["2857:39:157"],"nodeType":"IdentifierPath","referencedDeclaration":74706,"src":"2857:39:157"},"nodeType":"ModifierInvocation","src":"2857:39:157"},{"arguments":[{"id":74747,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74740,"src":"2921:6:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":74748,"kind":"modifierInvocation","modifierName":{"id":74746,"name":"retrievingValue","nameLocations":["2905:15:157"],"nodeType":"IdentifierPath","referencedDeclaration":74662,"src":"2905:15:157"},"nodeType":"ModifierInvocation","src":"2905:23:157"}],"name":"sendMessage","nameLocation":"2759:11:157","parameters":{"id":74741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74738,"mutability":"mutable","name":"_payload","nameLocation":"2786:8:157","nodeType":"VariableDeclaration","scope":74777,"src":"2771:23:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74737,"name":"bytes","nodeType":"ElementaryTypeName","src":"2771:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":74740,"mutability":"mutable","name":"_value","nameLocation":"2804:6:157","nodeType":"VariableDeclaration","scope":74777,"src":"2796:14:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":74739,"name":"uint128","nodeType":"ElementaryTypeName","src":"2796:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2770:41:157"},"returnParameters":{"id":74751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74777,"src":"2946:7:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74749,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2946:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2945:9:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74802,"nodeType":"FunctionDefinition","src":"3139:269:157","nodes":[],"body":{"id":74801,"nodeType":"Block","src":"3323:85:157","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":74794,"name":"_repliedTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74779,"src":"3361:10:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":74795,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75301,"src":"3373:7:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3373:9:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74797,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74781,"src":"3384:8:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":74798,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74783,"src":"3394:6:157","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":74793,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73446,"src":"3338:22:157","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":74799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3338:63:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74800,"nodeType":"EmitStatement","src":"3333:68:157"}]},"baseFunctions":[73530],"functionSelector":"29336f39","implemented":true,"kind":"function","modifiers":[{"id":74786,"kind":"modifierInvocation","modifierName":{"id":74785,"name":"whileActive","nameLocations":["3244:11:157"],"nodeType":"IdentifierPath","referencedDeclaration":74721,"src":"3244:11:157"},"nodeType":"ModifierInvocation","src":"3244:11:157"},{"id":74788,"kind":"modifierInvocation","modifierName":{"id":74787,"name":"whenInitMessageCreated","nameLocations":["3264:22:157"],"nodeType":"IdentifierPath","referencedDeclaration":74689,"src":"3264:22:157"},"nodeType":"ModifierInvocation","src":"3264:22:157"},{"arguments":[{"id":74790,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74783,"src":"3311:6:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":74791,"kind":"modifierInvocation","modifierName":{"id":74789,"name":"retrievingValue","nameLocations":["3295:15:157"],"nodeType":"IdentifierPath","referencedDeclaration":74662,"src":"3295:15:157"},"nodeType":"ModifierInvocation","src":"3295:23:157"}],"name":"sendReply","nameLocation":"3148:9:157","parameters":{"id":74784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74779,"mutability":"mutable","name":"_repliedTo","nameLocation":"3166:10:157","nodeType":"VariableDeclaration","scope":74802,"src":"3158:18:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74778,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3158:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":74781,"mutability":"mutable","name":"_payload","nameLocation":"3193:8:157","nodeType":"VariableDeclaration","scope":74802,"src":"3178:23:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74780,"name":"bytes","nodeType":"ElementaryTypeName","src":"3178:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":74783,"mutability":"mutable","name":"_value","nameLocation":"3211:6:157","nodeType":"VariableDeclaration","scope":74802,"src":"3203:14:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":74782,"name":"uint128","nodeType":"ElementaryTypeName","src":"3203:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3157:61:157"},"returnParameters":{"id":74792,"nodeType":"ParameterList","parameters":[],"src":"3323:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74816,"nodeType":"FunctionDefinition","src":"3414:139:157","nodes":[],"body":{"id":74815,"nodeType":"Block","src":"3486:67:157","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":74810,"name":"_claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74804,"src":"3524:10:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":74811,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75301,"src":"3536:7:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3536:9:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":74809,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73453,"src":"3501:22:157","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":74813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3501:45:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74814,"nodeType":"EmitStatement","src":"3496:50:157"}]},"baseFunctions":[73535],"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[{"id":74807,"kind":"modifierInvocation","modifierName":{"id":74806,"name":"whenInitMessageCreated","nameLocations":["3463:22:157"],"nodeType":"IdentifierPath","referencedDeclaration":74689,"src":"3463:22:157"},"nodeType":"ModifierInvocation","src":"3463:22:157"}],"name":"claimValue","nameLocation":"3423:10:157","parameters":{"id":74805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74804,"mutability":"mutable","name":"_claimedId","nameLocation":"3442:10:157","nodeType":"VariableDeclaration","scope":74816,"src":"3434:18:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74803,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3434:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3433:20:157"},"returnParameters":{"id":74808,"nodeType":"ParameterList","parameters":[],"src":"3486:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74831,"nodeType":"FunctionDefinition","src":"3559:154:157","nodes":[],"body":{"id":74830,"nodeType":"Block","src":"3652:61:157","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":74827,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74818,"src":"3699:6:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":74826,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73458,"src":"3667:31:157","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":74828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3667:39:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74829,"nodeType":"EmitStatement","src":"3662:44:157"}]},"baseFunctions":[73540],"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[{"id":74821,"kind":"modifierInvocation","modifierName":{"id":74820,"name":"whileActive","nameLocations":["3616:11:157"],"nodeType":"IdentifierPath","referencedDeclaration":74721,"src":"3616:11:157"},"nodeType":"ModifierInvocation","src":"3616:11:157"},{"arguments":[{"id":74823,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74818,"src":"3644:6:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":74824,"kind":"modifierInvocation","modifierName":{"id":74822,"name":"retrievingValue","nameLocations":["3628:15:157"],"nodeType":"IdentifierPath","referencedDeclaration":74662,"src":"3628:15:157"},"nodeType":"ModifierInvocation","src":"3628:23:157"}],"name":"executableBalanceTopUp","nameLocation":"3568:22:157","parameters":{"id":74819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74818,"mutability":"mutable","name":"_value","nameLocation":"3599:6:157","nodeType":"VariableDeclaration","scope":74831,"src":"3591:14:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":74817,"name":"uint128","nodeType":"ElementaryTypeName","src":"3591:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3590:16:157"},"returnParameters":{"id":74825,"nodeType":"ParameterList","parameters":[],"src":"3652:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74858,"nodeType":"FunctionDefinition","src":"3719:193:157","nodes":[],"body":{"id":74857,"nodeType":"Block","src":"3783:129:157","nodes":[],"statements":[{"assignments":[74837],"declarations":[{"constant":false,"id":74837,"mutability":"mutable","name":"balance","nameLocation":"3801:7:157","nodeType":"VariableDeclaration","scope":74857,"src":"3793:15:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74836,"name":"uint256","nodeType":"ElementaryTypeName","src":"3793:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":74848,"initialValue":{"arguments":[{"arguments":[{"id":74845,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3846:4:157","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}],"id":74844,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3838:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74843,"name":"address","nodeType":"ElementaryTypeName","src":"3838:7:157","typeDescriptions":{}}},"id":74846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3838:13:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":74839,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"3818:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:8:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74838,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75282,"src":"3811:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$73855_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":74841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3811:16:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73855","typeString":"contract IWrappedVara"}},"id":74842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3828:9:157","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":43097,"src":"3811:26:157","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":74847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3811:41:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3793:59:157"},{"expression":{"arguments":[{"id":74850,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74607,"src":"3877:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":74853,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74837,"src":"3896:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74852,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3888:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":74851,"name":"uint128","nodeType":"ElementaryTypeName","src":"3888:7:157","typeDescriptions":{}}},"id":74854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3888:16:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":74849,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75330,"src":"3862:14:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":74855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3862:43:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74856,"nodeType":"ExpressionStatement","src":"3862:43:157"}]},"baseFunctions":[73543],"functionSelector":"e43f3433","implemented":true,"kind":"function","modifiers":[{"id":74834,"kind":"modifierInvocation","modifierName":{"id":74833,"name":"whenTerminated","nameLocations":["3768:14:157"],"nodeType":"IdentifierPath","referencedDeclaration":74677,"src":"3768:14:157"},"nodeType":"ModifierInvocation","src":"3768:14:157"}],"name":"transferLockedValueToInheritor","nameLocation":"3728:30:157","parameters":{"id":74832,"nodeType":"ParameterList","parameters":[],"src":"3758:2:157"},"returnParameters":{"id":74835,"nodeType":"ParameterList","parameters":[],"src":"3783:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":74896,"nodeType":"FunctionDefinition","src":"3970:310:157","nodes":[],"body":{"id":74895,"nodeType":"Block","src":"4048:232:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74868,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74610,"src":"4066:11:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":74871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4089:1:157","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":74870,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4081:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74869,"name":"address","nodeType":"ElementaryTypeName","src":"4081:7:157","typeDescriptions":{}}},"id":74872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4081:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4066:25:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e6365","id":74874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4093:36:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""},"value":"initializer could only be set once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""}],"id":74867,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4058:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4058:72:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74876,"nodeType":"ExpressionStatement","src":"4058:72:157"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74878,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74605,"src":"4148:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":74881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4167:1:157","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":74880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4159:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74879,"name":"address","nodeType":"ElementaryTypeName","src":"4159:7:157","typeDescriptions":{}}},"id":74882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4159:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4148:21:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e6365","id":74884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4171:36:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""},"value":"initializer could only be set once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""}],"id":74877,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4140:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4140:68:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74886,"nodeType":"ExpressionStatement","src":"4140:68:157"},{"expression":{"id":74889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74887,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74610,"src":"4219:11:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":74888,"name":"_initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74860,"src":"4233:12:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4219:26:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":74890,"nodeType":"ExpressionStatement","src":"4219:26:157"},{"expression":{"id":74893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74891,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74605,"src":"4255:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":74892,"name":"_decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74862,"src":"4265:8:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4255:18:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":74894,"nodeType":"ExpressionStatement","src":"4255:18:157"}]},"baseFunctions":[73550],"functionSelector":"485cc955","implemented":true,"kind":"function","modifiers":[{"id":74865,"kind":"modifierInvocation","modifierName":{"id":74864,"name":"onlyRouter","nameLocations":["4037:10:157"],"nodeType":"IdentifierPath","referencedDeclaration":74628,"src":"4037:10:157"},"nodeType":"ModifierInvocation","src":"4037:10:157"}],"name":"initialize","nameLocation":"3979:10:157","parameters":{"id":74863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74860,"mutability":"mutable","name":"_initializer","nameLocation":"3998:12:157","nodeType":"VariableDeclaration","scope":74896,"src":"3990:20:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74859,"name":"address","nodeType":"ElementaryTypeName","src":"3990:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":74862,"mutability":"mutable","name":"_decoder","nameLocation":"4020:8:157","nodeType":"VariableDeclaration","scope":74896,"src":"4012:16:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74861,"name":"address","nodeType":"ElementaryTypeName","src":"4012:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3989:40:157"},"returnParameters":{"id":74866,"nodeType":"ParameterList","parameters":[],"src":"4048:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":74973,"nodeType":"FunctionDefinition","src":"4363:1163:157","nodes":[],"body":{"id":74972,"nodeType":"Block","src":"4476:1050:157","nodes":[],"statements":[{"documentation":"@dev Verify that the transition belongs to this contract.","expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74907,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"4564:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4576:7:157","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":76933,"src":"4564:19:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":74911,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4595:4:157","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}],"id":74910,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4587:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74909,"name":"address","nodeType":"ElementaryTypeName","src":"4587:7:157","typeDescriptions":{}}},"id":74912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4587:13:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4564:36:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6163746f724964206d757374206265207468697320636f6e7472616374","id":74914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4602:31:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_ba7be785920a68bd302e7ea09bd7071e8b885ef81058f7ff907b22051b8150cd","typeString":"literal_string \"actorId must be this contract\""},"value":"actorId must be this contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ba7be785920a68bd302e7ea09bd7071e8b885ef81058f7ff907b22051b8150cd","typeString":"literal_string \"actorId must be this contract\""}],"id":74906,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4556:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4556:78:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74916,"nodeType":"ExpressionStatement","src":"4556:78:157"},{"assignments":[74919],"declarations":[{"constant":false,"id":74919,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"4698:18:157","nodeType":"VariableDeclaration","scope":74972,"src":"4690:26:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74918,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4690:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":"@dev Send all outgoing messages.","id":74924,"initialValue":{"arguments":[{"expression":{"id":74921,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"4733:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4745:8:157","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":76947,"src":"4733:20:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$76912_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Message_$76912_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}],"id":74920,"name":"_sendMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75040,"src":"4719:13:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Message_$76912_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message calldata[] calldata) returns (bytes32)"}},"id":74923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4719:35:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4690:64:157"},{"assignments":[74927],"declarations":[{"constant":false,"id":74927,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"4817:15:157","nodeType":"VariableDeclaration","scope":74972,"src":"4809:23:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74926,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4809:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":"@dev Send value for each claim.","id":74932,"initialValue":{"arguments":[{"expression":{"id":74929,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"4848:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4860:11:157","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":76943,"src":"4848:23:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$76965_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$76965_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}],"id":74928,"name":"_claimValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75232,"src":"4835:12:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_ValueClaim_$76965_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValueClaim calldata[] calldata) returns (bytes32)"}},"id":74931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4835:37:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4809:63:157"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74933,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"4932:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4944:9:157","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":76937,"src":"4932:21:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":74937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4965:1:157","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":74936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4957:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74935,"name":"address","nodeType":"ElementaryTypeName","src":"4957:7:157","typeDescriptions":{}}},"id":74938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4957:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4932:35:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":"@dev Set inheritor if specified.","id":74946,"nodeType":"IfStatement","src":"4928:102:157","trueBody":{"id":74945,"nodeType":"Block","src":"4969:61:157","statements":[{"expression":{"arguments":[{"expression":{"id":74941,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"4997:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5009:9:157","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":76937,"src":"4997:21:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74940,"name":"_setInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75247,"src":"4983:13:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":74943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4983:36:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74944,"nodeType":"ExpressionStatement","src":"4983:36:157"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":74950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74947,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74612,"src":"5095:9:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":74948,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"5108:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5120:12:157","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":76935,"src":"5108:24:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5095:37:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":"@dev Update the state hash if changed.","id":74957,"nodeType":"IfStatement","src":"5091:110:157","trueBody":{"id":74956,"nodeType":"Block","src":"5134:67:157","statements":[{"expression":{"arguments":[{"expression":{"id":74952,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"5165:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5177:12:157","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":76935,"src":"5165:24:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":74951,"name":"_updateStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75261,"src":"5148:16:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":74954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5148:42:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74955,"nodeType":"ExpressionStatement","src":"5148:42:157"}]}},{"documentation":"@dev Return hash of performed state transition.","expression":{"arguments":[{"expression":{"id":74960,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"5316:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5328:7:157","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":76933,"src":"5316:19:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":74962,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"5349:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5361:12:157","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":76935,"src":"5349:24:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":74964,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"5387:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5399:9:157","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":76937,"src":"5387:21:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":74966,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"5422:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5434:14:157","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":76939,"src":"5422:26:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":74968,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74927,"src":"5462:15:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":74969,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74919,"src":"5491:18:157","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":74958,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"5278:4:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":74959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5283:19:157","memberName":"stateTransitionHash","nodeType":"MemberAccess","referencedDeclaration":77150,"src":"5278:24:157","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":74970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5278:241:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":74905,"id":74971,"nodeType":"Return","src":"5271:248:157"}]},"baseFunctions":[73558],"functionSelector":"9ed32350","implemented":true,"kind":"function","modifiers":[{"id":74902,"kind":"modifierInvocation","modifierName":{"id":74901,"name":"onlyRouter","nameLocations":["4447:10:157"],"nodeType":"IdentifierPath","referencedDeclaration":74628,"src":"4447:10:157"},"nodeType":"ModifierInvocation","src":"4447:10:157"}],"name":"performStateTransition","nameLocation":"4372:22:157","parameters":{"id":74900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74899,"mutability":"mutable","name":"_transition","nameLocation":"4425:11:157","nodeType":"VariableDeclaration","scope":74973,"src":"4395:41:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":74898,"nodeType":"UserDefinedTypeName","pathNode":{"id":74897,"name":"Gear.StateTransition","nameLocations":["4395:4:157","4400:15:157"],"nodeType":"IdentifierPath","referencedDeclaration":76948,"src":"4395:20:157"},"referencedDeclaration":76948,"src":"4395:20:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"src":"4394:43:157"},"returnParameters":{"id":74905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74973,"src":"4467:7:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74903,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4467:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4466:9:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75040,"nodeType":"FunctionDefinition","src":"5734:627:157","nodes":[],"body":{"id":75039,"nodeType":"Block","src":"5818:543:157","nodes":[],"statements":[{"assignments":[74983],"declarations":[{"constant":false,"id":74983,"mutability":"mutable","name":"messagesHashes","nameLocation":"5841:14:157","nodeType":"VariableDeclaration","scope":75039,"src":"5828:27:157","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":74982,"name":"bytes","nodeType":"ElementaryTypeName","src":"5828:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":74984,"nodeType":"VariableDeclarationStatement","src":"5828:27:157"},{"body":{"id":75033,"nodeType":"Block","src":"5913:399:157","statements":[{"assignments":[75000],"declarations":[{"constant":false,"id":75000,"mutability":"mutable","name":"message","nameLocation":"5949:7:157","nodeType":"VariableDeclaration","scope":75033,"src":"5927:29:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":74999,"nodeType":"UserDefinedTypeName","pathNode":{"id":74998,"name":"Gear.Message","nameLocations":["5927:4:157","5932:7:157"],"nodeType":"IdentifierPath","referencedDeclaration":76912,"src":"5927:12:157"},"referencedDeclaration":76912,"src":"5927:12:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"id":75004,"initialValue":{"baseExpression":{"id":75001,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74977,"src":"5959:9:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$76912_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":75003,"indexExpression":{"id":75002,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74986,"src":"5969:1:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5959:12:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"nodeType":"VariableDeclarationStatement","src":"5927:44:157"},{"expression":{"id":75015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75005,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74983,"src":"5986:14:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":75009,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74983,"src":"6016:14:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":75012,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75000,"src":"6049:7:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}],"expression":{"id":75010,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"6032:4:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6037:11:157","memberName":"messageHash","nodeType":"MemberAccess","referencedDeclaration":77096,"src":"6032:16:157","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$76912_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message memory) pure returns (bytes32)"}},"id":75013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6032:25:157","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":75007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6003:5:157","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":75006,"name":"bytes","nodeType":"ElementaryTypeName","src":"6003:5:157","typeDescriptions":{}}},"id":75008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6009:6:157","memberName":"concat","nodeType":"MemberAccess","src":"6003:12:157","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6003:55:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5986:72:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":75016,"nodeType":"ExpressionStatement","src":"5986:72:157"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":75017,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75000,"src":"6144:7:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6152:12:157","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":76911,"src":"6144:20:157","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$76931_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":75019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6165:2:157","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":76928,"src":"6144:23:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":75020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6171:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6144:28:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":75031,"nodeType":"Block","src":"6243:59:157","statements":[{"expression":{"arguments":[{"id":75028,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75000,"src":"6279:7:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":75027,"name":"_sendReplyMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75167,"src":"6261:17:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$76912_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":75029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6261:26:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75030,"nodeType":"ExpressionStatement","src":"6261:26:157"}]},"id":75032,"nodeType":"IfStatement","src":"6140:162:157","trueBody":{"id":75026,"nodeType":"Block","src":"6174:63:157","statements":[{"expression":{"arguments":[{"id":75023,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75000,"src":"6214:7:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":75022,"name":"_sendMailboxedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75097,"src":"6192:21:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$76912_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":75024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6192:30:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75025,"nodeType":"ExpressionStatement","src":"6192:30:157"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74989,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74986,"src":"5886:1:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":74990,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74977,"src":"5890:9:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$76912_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":74991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5900:6:157","memberName":"length","nodeType":"MemberAccess","src":"5890:16:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5886:20:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75034,"initializationExpression":{"assignments":[74986],"declarations":[{"constant":false,"id":74986,"mutability":"mutable","name":"i","nameLocation":"5879:1:157","nodeType":"VariableDeclaration","scope":75034,"src":"5871:9:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74985,"name":"uint256","nodeType":"ElementaryTypeName","src":"5871:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":74988,"initialValue":{"hexValue":"30","id":74987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5883:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5871:13:157"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":74994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5908:3:157","subExpression":{"id":74993,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74986,"src":"5908:1:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74995,"nodeType":"ExpressionStatement","src":"5908:3:157"},"nodeType":"ForStatement","src":"5866:446:157"},{"expression":{"arguments":[{"id":75036,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74983,"src":"6339:14:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":75035,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"6329:9:157","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":75037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6329:25:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":74981,"id":75038,"nodeType":"Return","src":"6322:32:157"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMessages","nameLocation":"5743:13:157","parameters":{"id":74978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74977,"mutability":"mutable","name":"_messages","nameLocation":"5781:9:157","nodeType":"VariableDeclaration","scope":75040,"src":"5757:33:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$76912_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message[]"},"typeName":{"baseType":{"id":74975,"nodeType":"UserDefinedTypeName","pathNode":{"id":74974,"name":"Gear.Message","nameLocations":["5757:4:157","5762:7:157"],"nodeType":"IdentifierPath","referencedDeclaration":76912,"src":"5757:12:157"},"referencedDeclaration":76912,"src":"5757:12:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_storage_ptr","typeString":"struct Gear.Message"}},"id":74976,"nodeType":"ArrayTypeName","src":"5757:14:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$76912_storage_$dyn_storage_ptr","typeString":"struct Gear.Message[]"}},"visibility":"internal"}],"src":"5756:35:157"},"returnParameters":{"id":74981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74980,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75040,"src":"5809:7:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74979,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5809:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5808:9:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":75097,"nodeType":"FunctionDefinition","src":"6420:653:157","nodes":[],"body":{"id":75096,"nodeType":"Block","src":"6491:582:157","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75047,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74605,"src":"6505:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":75050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6524:1:157","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":75049,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6516:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75048,"name":"address","nodeType":"ElementaryTypeName","src":"6516:7:157","typeDescriptions":{}}},"id":75051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6516:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6505:21:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75084,"nodeType":"IfStatement","src":"6501:474:157","trueBody":{"id":75083,"nodeType":"Block","src":"6528:447:157","statements":[{"assignments":[75054],"declarations":[{"constant":false,"id":75054,"mutability":"mutable","name":"callData","nameLocation":"6555:8:157","nodeType":"VariableDeclaration","scope":75083,"src":"6542:21:157","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":75053,"name":"bytes","nodeType":"ElementaryTypeName","src":"6542:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":75069,"initialValue":{"arguments":[{"expression":{"expression":{"id":75057,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73594,"src":"6606:14:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$73594_$","typeString":"type(contract IMirrorDecoder)"}},"id":75058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6621:13:157","memberName":"onMessageSent","nodeType":"MemberAccess","referencedDeclaration":73580,"src":"6606:28:157","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":75059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6635:8:157","memberName":"selector","nodeType":"MemberAccess","src":"6606:37:157","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":75060,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"6661:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6670:2:157","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76902,"src":"6661:11:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":75062,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"6690:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6699:11:157","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":76904,"src":"6690:20:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75064,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"6728:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6737:7:157","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":76906,"src":"6728:16:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":75066,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"6762:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6771:5:157","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":76908,"src":"6762:14:157","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":75055,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6566:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":75056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6570:18:157","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"6566:22:157","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":75068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6566:224:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6542:248:157"},{"assignments":[75071,null],"declarations":[{"constant":false,"id":75071,"mutability":"mutable","name":"success","nameLocation":"6850:7:157","nodeType":"VariableDeclaration","scope":75083,"src":"6845:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75070,"name":"bool","nodeType":"ElementaryTypeName","src":"6845:4:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":75078,"initialValue":{"arguments":[{"id":75076,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75054,"src":"6889:8:157","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":75072,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74605,"src":"6862:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6870:4:157","memberName":"call","nodeType":"MemberAccess","src":"6862:12:157","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":75075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":75074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6880:7:157","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"6862:26:157","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":75077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6862:36:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6844:54:157"},{"condition":{"id":75079,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75071,"src":"6917:7:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75082,"nodeType":"IfStatement","src":"6913:52:157","trueBody":{"id":75081,"nodeType":"Block","src":"6926:39:157","statements":[{"functionReturnParameters":75046,"id":75080,"nodeType":"Return","src":"6944:7:157"}]}}]}},{"eventCall":{"arguments":[{"expression":{"id":75086,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"6998:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7007:2:157","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76902,"src":"6998:11:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":75088,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"7011:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7020:11:157","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":76904,"src":"7011:20:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75090,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"7033:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7042:7:157","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":76906,"src":"7033:16:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":75092,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"7051:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7060:5:157","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":76908,"src":"7051:14:157","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":75085,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73469,"src":"6990:7:157","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":75094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6990:76:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75095,"nodeType":"EmitStatement","src":"6985:81:157"}]},"documentation":{"id":75041,"nodeType":"StructuredDocumentation","src":"6367:48:157","text":"@dev Value never sent since goes to mailbox."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMailboxedMessage","nameLocation":"6429:21:157","parameters":{"id":75045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75044,"mutability":"mutable","name":"_message","nameLocation":"6473:8:157","nodeType":"VariableDeclaration","scope":75097,"src":"6451:30:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":75043,"nodeType":"UserDefinedTypeName","pathNode":{"id":75042,"name":"Gear.Message","nameLocations":["6451:4:157","6456:7:157"],"nodeType":"IdentifierPath","referencedDeclaration":76912,"src":"6451:12:157"},"referencedDeclaration":76912,"src":"6451:12:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"6450:32:157"},"returnParameters":{"id":75046,"nodeType":"ParameterList","parameters":[],"src":"6491:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":75167,"nodeType":"FunctionDefinition","src":"7148:784:157","nodes":[],"body":{"id":75166,"nodeType":"Block","src":"7215:717:157","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":75105,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7240:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7249:11:157","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":76904,"src":"7240:20:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75107,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7262:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7271:5:157","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":76908,"src":"7262:14:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":75104,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75330,"src":"7225:14:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":75109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7225:52:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75110,"nodeType":"ExpressionStatement","src":"7225:52:157"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75111,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74605,"src":"7292:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":75114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7311:1:157","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":75113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7303:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75112,"name":"address","nodeType":"ElementaryTypeName","src":"7303:7:157","typeDescriptions":{}}},"id":75115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7303:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7292:21:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75152,"nodeType":"IfStatement","src":"7288:529:157","trueBody":{"id":75151,"nodeType":"Block","src":"7315:502:157","statements":[{"assignments":[75118],"declarations":[{"constant":false,"id":75118,"mutability":"mutable","name":"callData","nameLocation":"7342:8:157","nodeType":"VariableDeclaration","scope":75151,"src":"7329:21:157","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":75117,"name":"bytes","nodeType":"ElementaryTypeName","src":"7329:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":75137,"initialValue":{"arguments":[{"expression":{"expression":{"id":75121,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73594,"src":"7393:14:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$73594_$","typeString":"type(contract IMirrorDecoder)"}},"id":75122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7408:11:157","memberName":"onReplySent","nodeType":"MemberAccess","referencedDeclaration":73593,"src":"7393:26:157","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":75123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7420:8:157","memberName":"selector","nodeType":"MemberAccess","src":"7393:35:157","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":75124,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7446:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7455:11:157","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":76904,"src":"7446:20:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75126,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7484:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7493:7:157","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":76906,"src":"7484:16:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":75128,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7518:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7527:5:157","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":76908,"src":"7518:14:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":75130,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7550:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7559:12:157","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":76911,"src":"7550:21:157","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$76931_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":75132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7572:2:157","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":76928,"src":"7550:24:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":75133,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7592:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7601:12:157","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":76911,"src":"7592:21:157","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$76931_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":75135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7614:4:157","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":76930,"src":"7592:26:157","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":75119,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7353:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":75120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7357:18:157","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"7353:22:157","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":75136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7353:279:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7329:303:157"},{"assignments":[75139,null],"declarations":[{"constant":false,"id":75139,"mutability":"mutable","name":"success","nameLocation":"7692:7:157","nodeType":"VariableDeclaration","scope":75151,"src":"7687:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75138,"name":"bool","nodeType":"ElementaryTypeName","src":"7687:4:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":75146,"initialValue":{"arguments":[{"id":75144,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75118,"src":"7731:8:157","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":75140,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74605,"src":"7704:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7712:4:157","memberName":"call","nodeType":"MemberAccess","src":"7704:12:157","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":75143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":75142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7722:7:157","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"7704:26:157","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":75145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7704:36:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7686:54:157"},{"condition":{"id":75147,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75139,"src":"7759:7:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75150,"nodeType":"IfStatement","src":"7755:52:157","trueBody":{"id":75149,"nodeType":"Block","src":"7768:39:157","statements":[{"functionReturnParameters":75103,"id":75148,"nodeType":"Return","src":"7786:7:157"}]}}]}},{"eventCall":{"arguments":[{"expression":{"id":75154,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7838:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7847:7:157","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":76906,"src":"7838:16:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":75156,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7856:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7865:5:157","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":76908,"src":"7856:14:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":75158,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7872:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7881:12:157","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":76911,"src":"7872:21:157","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$76931_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":75160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7894:2:157","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":76928,"src":"7872:24:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":75161,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7898:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7907:12:157","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":76911,"src":"7898:21:157","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$76931_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":75163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7920:4:157","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":76930,"src":"7898:26:157","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":75153,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73480,"src":"7832:5:157","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":75164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7832:93:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75165,"nodeType":"EmitStatement","src":"7827:98:157"}]},"documentation":{"id":75098,"nodeType":"StructuredDocumentation","src":"7079:64:157","text":"@dev Non-zero value always sent since never goes to mailbox."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendReplyMessage","nameLocation":"7157:17:157","parameters":{"id":75102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75101,"mutability":"mutable","name":"_message","nameLocation":"7197:8:157","nodeType":"VariableDeclaration","scope":75167,"src":"7175:30:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":75100,"nodeType":"UserDefinedTypeName","pathNode":{"id":75099,"name":"Gear.Message","nameLocations":["7175:4:157","7180:7:157"],"nodeType":"IdentifierPath","referencedDeclaration":76912,"src":"7175:12:157"},"referencedDeclaration":76912,"src":"7175:12:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"7174:32:157"},"returnParameters":{"id":75103,"nodeType":"ParameterList","parameters":[],"src":"7215:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":75232,"nodeType":"FunctionDefinition","src":"7938:514:157","nodes":[],"body":{"id":75231,"nodeType":"Block","src":"8022:430:157","nodes":[],"statements":[{"assignments":[75177],"declarations":[{"constant":false,"id":75177,"mutability":"mutable","name":"valueClaimsBytes","nameLocation":"8045:16:157","nodeType":"VariableDeclaration","scope":75231,"src":"8032:29:157","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":75176,"name":"bytes","nodeType":"ElementaryTypeName","src":"8032:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":75178,"nodeType":"VariableDeclarationStatement","src":"8032:29:157"},{"body":{"id":75225,"nodeType":"Block","src":"8117:284:157","statements":[{"assignments":[75194],"declarations":[{"constant":false,"id":75194,"mutability":"mutable","name":"claim","nameLocation":"8156:5:157","nodeType":"VariableDeclaration","scope":75225,"src":"8131:30:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim"},"typeName":{"id":75193,"nodeType":"UserDefinedTypeName","pathNode":{"id":75192,"name":"Gear.ValueClaim","nameLocations":["8131:4:157","8136:10:157"],"nodeType":"IdentifierPath","referencedDeclaration":76965,"src":"8131:15:157"},"referencedDeclaration":76965,"src":"8131:15:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_storage_ptr","typeString":"struct Gear.ValueClaim"}},"visibility":"internal"}],"id":75198,"initialValue":{"baseExpression":{"id":75195,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75171,"src":"8164:7:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$76965_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":75197,"indexExpression":{"id":75196,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75180,"src":"8172:1:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8164:10:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"nodeType":"VariableDeclarationStatement","src":"8131:43:157"},{"expression":{"id":75209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75199,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75177,"src":"8189:16:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":75203,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75177,"src":"8221:16:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":75206,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75194,"src":"8260:5:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}],"expression":{"id":75204,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"8239:4:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8244:15:157","memberName":"valueClaimBytes","nodeType":"MemberAccess","referencedDeclaration":77274,"src":"8239:20:157","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ValueClaim_$76965_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct Gear.ValueClaim memory) pure returns (bytes memory)"}},"id":75207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8239:27:157","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":75201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8208:5:157","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":75200,"name":"bytes","nodeType":"ElementaryTypeName","src":"8208:5:157","typeDescriptions":{}}},"id":75202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8214:6:157","memberName":"concat","nodeType":"MemberAccess","src":"8208:12:157","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8208:59:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8189:78:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":75210,"nodeType":"ExpressionStatement","src":"8189:78:157"},{"expression":{"arguments":[{"expression":{"id":75212,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75194,"src":"8297:5:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":75213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8303:11:157","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":76962,"src":"8297:17:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75214,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75194,"src":"8316:5:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":75215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8322:5:157","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":76964,"src":"8316:11:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":75211,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75330,"src":"8282:14:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":75216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8282:46:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75217,"nodeType":"ExpressionStatement","src":"8282:46:157"},{"eventCall":{"arguments":[{"expression":{"id":75219,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75194,"src":"8361:5:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":75220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8367:9:157","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":76960,"src":"8361:15:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":75221,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75194,"src":"8378:5:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":75222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8384:5:157","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":76964,"src":"8378:11:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":75218,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73487,"src":"8348:12:157","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":75223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8348:42:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75224,"nodeType":"EmitStatement","src":"8343:47:157"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75183,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75180,"src":"8092:1:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":75184,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75171,"src":"8096:7:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$76965_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":75185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8104:6:157","memberName":"length","nodeType":"MemberAccess","src":"8096:14:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8092:18:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75226,"initializationExpression":{"assignments":[75180],"declarations":[{"constant":false,"id":75180,"mutability":"mutable","name":"i","nameLocation":"8085:1:157","nodeType":"VariableDeclaration","scope":75226,"src":"8077:9:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75179,"name":"uint256","nodeType":"ElementaryTypeName","src":"8077:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75182,"initialValue":{"hexValue":"30","id":75181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8089:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8077:13:157"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8112:3:157","subExpression":{"id":75187,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75180,"src":"8112:1:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75189,"nodeType":"ExpressionStatement","src":"8112:3:157"},"nodeType":"ForStatement","src":"8072:329:157"},{"expression":{"arguments":[{"id":75228,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75177,"src":"8428:16:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":75227,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8418:9:157","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":75229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8418:27:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75175,"id":75230,"nodeType":"Return","src":"8411:34:157"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_claimValues","nameLocation":"7947:12:157","parameters":{"id":75172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75171,"mutability":"mutable","name":"_claims","nameLocation":"7987:7:157","nodeType":"VariableDeclaration","scope":75232,"src":"7960:34:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$76965_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim[]"},"typeName":{"baseType":{"id":75169,"nodeType":"UserDefinedTypeName","pathNode":{"id":75168,"name":"Gear.ValueClaim","nameLocations":["7960:4:157","7965:10:157"],"nodeType":"IdentifierPath","referencedDeclaration":76965,"src":"7960:15:157"},"referencedDeclaration":76965,"src":"7960:15:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_storage_ptr","typeString":"struct Gear.ValueClaim"}},"id":75170,"nodeType":"ArrayTypeName","src":"7960:17:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$76965_storage_$dyn_storage_ptr","typeString":"struct Gear.ValueClaim[]"}},"visibility":"internal"}],"src":"7959:36:157"},"returnParameters":{"id":75175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75174,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75232,"src":"8013:7:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75173,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8013:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8012:9:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":75247,"nodeType":"FunctionDefinition","src":"8524:243:157","nodes":[],"body":{"id":75246,"nodeType":"Block","src":"8587:180:157","nodes":[],"statements":[{"documentation":"@dev Set inheritor.","expression":{"id":75241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75239,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74607,"src":"8629:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75240,"name":"_inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75234,"src":"8641:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8629:22:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75242,"nodeType":"ExpressionStatement","src":"8629:22:157"},{"documentation":"@dev Transfer all available balance to the inheritor.","expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75243,"name":"transferLockedValueToInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74858,"src":"8728:30:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":75244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8728:32:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75245,"nodeType":"ExpressionStatement","src":"8728:32:157"}]},"implemented":true,"kind":"function","modifiers":[{"id":75237,"kind":"modifierInvocation","modifierName":{"id":75236,"name":"whileActive","nameLocations":["8575:11:157"],"nodeType":"IdentifierPath","referencedDeclaration":74721,"src":"8575:11:157"},"nodeType":"ModifierInvocation","src":"8575:11:157"}],"name":"_setInheritor","nameLocation":"8533:13:157","parameters":{"id":75235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75234,"mutability":"mutable","name":"_inheritor","nameLocation":"8555:10:157","nodeType":"VariableDeclaration","scope":75247,"src":"8547:18:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75233,"name":"address","nodeType":"ElementaryTypeName","src":"8547:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8546:20:157"},"returnParameters":{"id":75238,"nodeType":"ParameterList","parameters":[],"src":"8587:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":75261,"nodeType":"FunctionDefinition","src":"8773:235:157","nodes":[],"body":{"id":75260,"nodeType":"Block","src":"8827:181:157","nodes":[],"statements":[{"documentation":"@dev Set state hash.","expression":{"id":75254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75252,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74612,"src":"8870:9:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75253,"name":"_stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75249,"src":"8882:10:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8870:22:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75255,"nodeType":"ExpressionStatement","src":"8870:22:157"},{"documentation":"@dev Emits an event signaling that the state has changed.","eventCall":{"arguments":[{"id":75257,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74612,"src":"8991:9:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":75256,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73424,"src":"8978:12:157","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":75258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8978:23:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75259,"nodeType":"EmitStatement","src":"8973:28:157"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_updateStateHash","nameLocation":"8782:16:157","parameters":{"id":75250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75249,"mutability":"mutable","name":"_stateHash","nameLocation":"8807:10:157","nodeType":"VariableDeclaration","scope":75261,"src":"8799:18:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75248,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8799:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8798:20:157"},"returnParameters":{"id":75251,"nodeType":"ParameterList","parameters":[],"src":"8827:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":75282,"nodeType":"FunctionDefinition","src":"9048:182:157","nodes":[],"body":{"id":75281,"nodeType":"Block","src":"9120:110:157","nodes":[],"statements":[{"assignments":[75270],"declarations":[{"constant":false,"id":75270,"mutability":"mutable","name":"wvaraAddr","nameLocation":"9138:9:157","nodeType":"VariableDeclaration","scope":75281,"src":"9130:17:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75269,"name":"address","nodeType":"ElementaryTypeName","src":"9130:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":75276,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":75272,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75263,"src":"9158:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75271,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73844,"src":"9150:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$73844_$","typeString":"type(contract IRouter)"}},"id":75273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9150:19:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$73844","typeString":"contract IRouter"}},"id":75274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9170:11:157","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":73697,"src":"9150:31:157","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":75275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9150:33:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9130:53:157"},{"expression":{"arguments":[{"id":75278,"name":"wvaraAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75270,"src":"9213:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75277,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73855,"src":"9200:12:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$73855_$","typeString":"type(contract IWrappedVara)"}},"id":75279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9200:23:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73855","typeString":"contract IWrappedVara"}},"functionReturnParameters":75268,"id":75280,"nodeType":"Return","src":"9193:30:157"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_wvara","nameLocation":"9057:6:157","parameters":{"id":75264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75263,"mutability":"mutable","name":"routerAddr","nameLocation":"9072:10:157","nodeType":"VariableDeclaration","scope":75282,"src":"9064:18:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75262,"name":"address","nodeType":"ElementaryTypeName","src":"9064:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9063:20:157"},"returnParameters":{"id":75268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75267,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75282,"src":"9106:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73855","typeString":"contract IWrappedVara"},"typeName":{"id":75266,"nodeType":"UserDefinedTypeName","pathNode":{"id":75265,"name":"IWrappedVara","nameLocations":["9106:12:157"],"nodeType":"IdentifierPath","referencedDeclaration":73855,"src":"9106:12:157"},"referencedDeclaration":73855,"src":"9106:12:157","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73855","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"src":"9105:14:157"},"scope":75331,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":75301,"nodeType":"FunctionDefinition","src":"9236:182:157","nodes":[],"body":{"id":75300,"nodeType":"Block","src":"9286:132:157","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75287,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9300:3:157","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9304:6:157","memberName":"sender","nodeType":"MemberAccess","src":"9300:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":75289,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74605,"src":"9314:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9300:21:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":75298,"nodeType":"Block","src":"9370:42:157","statements":[{"expression":{"expression":{"id":75295,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9391:3:157","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9395:6:157","memberName":"sender","nodeType":"MemberAccess","src":"9391:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75286,"id":75297,"nodeType":"Return","src":"9384:17:157"}]},"id":75299,"nodeType":"IfStatement","src":"9296:116:157","trueBody":{"id":75294,"nodeType":"Block","src":"9323:41:157","statements":[{"expression":{"expression":{"id":75291,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"9344:2:157","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":75292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9347:6:157","memberName":"origin","nodeType":"MemberAccess","src":"9344:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75286,"id":75293,"nodeType":"Return","src":"9337:16:157"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_source","nameLocation":"9245:7:157","parameters":{"id":75283,"nodeType":"ParameterList","parameters":[],"src":"9252:2:157"},"returnParameters":{"id":75286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75301,"src":"9277:7:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75284,"name":"address","nodeType":"ElementaryTypeName","src":"9277:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9276:9:157"},"scope":75331,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":75330,"nodeType":"FunctionDefinition","src":"9424:243:157","nodes":[],"body":{"id":75329,"nodeType":"Block","src":"9492:175:157","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":75310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75308,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75305,"src":"9506:5:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":75309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9515:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9506:10:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75328,"nodeType":"IfStatement","src":"9502:159:157","trueBody":{"id":75327,"nodeType":"Block","src":"9518:143:157","statements":[{"assignments":[75312],"declarations":[{"constant":false,"id":75312,"mutability":"mutable","name":"success","nameLocation":"9537:7:157","nodeType":"VariableDeclaration","scope":75327,"src":"9532:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75311,"name":"bool","nodeType":"ElementaryTypeName","src":"9532:4:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":75321,"initialValue":{"arguments":[{"id":75318,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75303,"src":"9573:11:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75319,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75305,"src":"9586:5:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":75314,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"9554:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":75315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9554:8:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75313,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75282,"src":"9547:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$73855_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":75316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9547:16:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73855","typeString":"contract IWrappedVara"}},"id":75317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9564:8:157","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":43107,"src":"9547:25:157","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":75320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9547:45:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9532:60:157"},{"expression":{"arguments":[{"id":75323,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75312,"src":"9614:7:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207472616e73666572205756617261","id":75324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9623:26:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_67b810931d6bc27bebc6c54d267fd2daa6fef9e1939bb1712f8d92f0ff26a989","typeString":"literal_string \"failed to transfer WVara\""},"value":"failed to transfer WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67b810931d6bc27bebc6c54d267fd2daa6fef9e1939bb1712f8d92f0ff26a989","typeString":"literal_string \"failed to transfer WVara\""}],"id":75322,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9606:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9606:44:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75326,"nodeType":"ExpressionStatement","src":"9606:44:157"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_transferValue","nameLocation":"9433:14:157","parameters":{"id":75306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75303,"mutability":"mutable","name":"destination","nameLocation":"9456:11:157","nodeType":"VariableDeclaration","scope":75330,"src":"9448:19:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75302,"name":"address","nodeType":"ElementaryTypeName","src":"9448:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75305,"mutability":"mutable","name":"value","nameLocation":"9477:5:157","nodeType":"VariableDeclaration","scope":75330,"src":"9469:13:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":75304,"name":"uint128","nodeType":"ElementaryTypeName","src":"9469:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9447:36:157"},"returnParameters":{"id":75307,"nodeType":"ParameterList","parameters":[],"src":"9492:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":74602,"name":"IMirror","nameLocations":["422:7:157"],"nodeType":"IdentifierPath","referencedDeclaration":73559,"src":"422:7:157"},"id":74603,"nodeType":"InheritanceSpecifier","src":"422:7:157"}],"canonicalName":"Mirror","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[75331,73559],"name":"Mirror","nameLocation":"412:6:157","scope":75332,"usedErrors":[],"usedEvents":[73424,73435,73446,73453,73458,73469,73480,73487]}],"license":"UNLICENSED"},"id":157} \ No newline at end of file +{"abi":[{"type":"function","name":"claimValue","inputs":[{"name":"_claimedId","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":"nonpayable"},{"type":"function","name":"inheritor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_initializer","type":"address","internalType":"address"},{"name":"_decoder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initializer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"performStateTransition","inputs":[{"name":"_transition","type":"tuple","internalType":"struct Gear.StateTransition","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"inheritor","type":"bytes","internalType":"bytes"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueClaims","type":"tuple[]","internalType":"struct Gear.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 Gear.Message[]","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 Gear.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]}]}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"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":"nonpayable"},{"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":"nonpayable"},{"type":"function","name":"stateHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"transferLockedValueToInheritor","inputs":[],"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}],"bytecode":{"object":"0x6080806040523460155761175e908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806329336f3914610da657806336a52a1814610d7e578063485cc95514610ce9578063701da98e14610ccc578063704ed54214610bb857806391d5a64c14610b5b5780639cb3300514610b345780639ce110d714610b0c578063a02637b21461043e578063affed0e014610421578063d5624222146101e0578063e43f3433146100d85763f887ea40146100a8575f80fd5b346100d4575f3660031901126100d45760206100c261129d565b6040516001600160a01b039091168152f35b5f80fd5b346100d4575f3660031901126100d4576001546001600160a01b0316801561019b5760249060206001600160a01b0361011761011261129d565b6112f0565b16604051938480926370a0823160e01b82523060048301525afa918215610190575f92610155575b506001600160801b03610153921690611368565b005b91506020823d602011610188575b8161017060209383611003565b810103126100d4579051906001600160801b0361013f565b3d9150610163565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b346100d45760403660031901126100d4576004356001600160401b0381116100d457610210903690600401610f0a565b906024356001600160801b0381168082036100d45760015461023b906001600160a01b031615610f5f565b60045415801590610402575b15610384576102ee575b6004545f1981146102da576020938160017f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c69301600455604051868101913060601b83526034820152603481526102a9605482611003565b519020936102cf6001600160a01b036102c061134d565b16946040519384938885611102565b0390a2604051908152f35b634e487b7160e01b5f52601160045260245ffd5b6103356020826102fc61129d565b6001600160a01b0361030d826112f0565b16905f61031861134d565b6040516323b872dd60e01b8152968795869485936004850161103c565b03925af1801561019057610350915f91610355575b50611066565b610251565b610377915060203d60201161037d575b61036f8183611003565b810190611024565b8561034a565b503d610365565b60405162461bcd60e51b815260206004820152604a60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201527f6d657373616765207965743b20616e6420736f75726365206973206e6f7420696064820152693734ba34b0b634bd32b960b11b608482015260a490fd5b5061040b61134d565b6002546001600160a01b03918216911614610247565b346100d4575f3660031901126100d4576020600454604051908152f35b346100d45760203660031901126100d4576004356001600160401b0381116100d457806004019080360360c06003198201126100d45761048f6001600160a01b0361048761129d565b163314611130565b610498836111d3565b306001600160a01b0390911603610ac7576022190160a4820135818112156100d4578201906004820135906001600160401b0382116100d4578160051b360360248401136100d4575f94919360e2193685900301929060605b868810156106e0576024600589901b87010135858112156100d4576004908701019760208901601f198a3603019260c084126100d45760405160a081018181106001600160401b038211176106cc576040528235815261055360408d01610f4b565b906020810191825260608d01356001600160401b0381116100d4576020908e010136601f820112156100d45760406105a68f926105996080913690602081359101611234565b9383860194855201610f37565b6060840190815297607f1901126100d45760405193604085018581106001600160401b038211176106cc5760405260a08f01358086529e60c00135936001600160e01b0319851685036100d4576001986106836034605460209996876106a99a8c9a8b809b019182528260808201525197519251965191519063ffffffff60e01b905116908a6040519889958287019b8c526001600160601b03199060601b1660408701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016014810184520182611003565b5190206040519582879351918291018585015e8201908382015203018084520182611003565b996106be576106b790611602565b01966104f1565b6106c79061147f565b6106b7565b634e487b7160e01b5f52604160045260245ffd5b60208151910120926084820135908112156100d4578101906004820135926001600160401b0384116100d45760608402360360248401136100d4576060945f5b8581101561086f576004606082028601016060601f1982360301126100d45760405190606082018281106001600160401b038211176106cc5760405260208101359182815260408201996107738b610f4b565b928360208401526060019261078784610f37565b6040819401526040519260208401918683526001600160601b03199060601b1660408501526001600160801b03199060801b166054840152604483526107ce606484611003565b60405192828493516020819201602086015e83019060208201905f8252519283915e016020015f815203601f19810182526108099082611003565b98610813906111d3565b61081c8261126a565b61082591611368565b61082e9061126a565b6040519182526001600160801b0316602082015260407fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578391a1600101610720565b508551602087012090604484019061088782856111e7565b905061096c575b605461092f9260646050936108d66020996108ce6108c560035496602484013580980361093a575b6108bf8d6111d3565b9c6111e7565b9590920161126a565b933691611234565b96896040519889958287019b6001600160601b03199060601b168c5260348701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016030810184520182611003565b519020604051908152f35b876003557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c0809308e6040518a8152a16108b6565b61098061097983866111e7565b3691611234565b6014815103610a73576014015160015495906109a56001600160a01b03881615610f5f565b6001600160a01b03166001600160a01b0319969096168617600155851561019b5760249560206001600160a01b036109de61011261129d565b16604051988980926370a0823160e01b82523060048301525afa968715610190575f97610a3a575b509260646050936108d6605494610a2c61092f986001600160801b0360209d1690611368565b99505093505092505061088e565b965091926020873d602011610a6b575b81610a5760209383611003565b810103126100d45795519592916064610a06565b3d9150610a4a565b60405162461bcd60e51b815260206004820152602660248201527f41646472657373206d757374206265203230206279746573206c6f6e6720696660448201526508195e1a5cdd60d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152601d60248201527f6163746f724964206d757374206265207468697320636f6e74726163740000006044820152606490fd5b346100d4575f3660031901126100d4576002546040516001600160a01b039091168152602090f35b346100d4575f3660031901126100d4575f546040516001600160a01b039091168152602090f35b346100d45760203660031901126100d457610b796004541515610fa3565b6001600160a01b03610b8961134d565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a2005b346100d45760203660031901126100d4576004356001600160801b038116908181036100d457600154610bf4906001600160a01b031615610f5f565b81610c27575b7f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667602083604051908152a1005b906020610c6f92610c3661129d565b6001600160a01b03610c47826112f0565b16905f610c5261134d565b6040516323b872dd60e01b8152978895869485936004850161103c565b03925af190811561019057610cae6020927f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667945f91610cb55750611066565b9150610bfa565b6103779150843d861161037d5761036f8183611003565b346100d4575f3660031901126100d4576020600354604051908152f35b346100d45760403660031901126100d4576004356001600160a01b038116908190036100d4576024356001600160a01b03811691908290036100d457610d386001600160a01b0361048761129d565b60025490610d4f6001600160a01b0383161561117c565b5f5491610d656001600160a01b0384161561117c565b6001600160a01b03199081169190911760025516175f55005b346100d4575f3660031901126100d4576001546040516001600160a01b039091168152602090f35b346100d45760603660031901126100d4576024356001600160401b0381116100d457610dd6903690600401610f0a565b90604435916001600160801b0383168084036100d457600154610e02906001600160a01b031615610f5f565b610e0f6004541515610fa3565b610e5f575b7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f91610e5a6001600160a01b03610e4961134d565b169460405193849360043585611102565b0390a2005b610ea791602084610e6e61129d565b6001600160a01b03610e7f826112f0565b16905f610e8a61134d565b6040516323b872dd60e01b8152988995869485936004850161103c565b03925af1928315610190577fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f93610ee4915f91610eeb5750611066565b9150610e14565b610f04915060203d60201161037d5761036f8183611003565b8661034a565b9181601f840112156100d4578235916001600160401b0383116100d457602083818601950101116100d457565b35906001600160801b03821682036100d457565b35906001600160a01b03821682036100d457565b15610f6657565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b15610faa57565b60405162461bcd60e51b815260206004820152602b60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201526a1b595cdcd859d9481e595d60aa1b6064820152608490fd5b90601f801991011681019081106001600160401b038211176106cc57604052565b908160209103126100d4575180151581036100d45790565b6001600160a01b039182168152911660208201526001600160801b03909116604082015260600190565b1561106d57565b60405162461bcd60e51b815260206004820152604160248201527f6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f7560448201527f6e74206f662057566172612066726f6d20736f7572636520746f20726f7574656064820152603960f91b608482015260a490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b92604092611129916001600160801b039397969786526060602087015260608601916110e2565b9416910152565b1561113757565b60405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f742074686520726f7574657200000000000000006044820152606490fd5b1561118357565b60405162461bcd60e51b815260206004820152602260248201527f696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e604482015261636560f01b6064820152608490fd5b356001600160a01b03811681036100d45790565b903590601e19813603018212156100d457018035906001600160401b0382116100d4576020019181360383136100d457565b6001600160401b0381116106cc57601f01601f191660200190565b92919261124082611219565b9161124e6040519384611003565b8294818452818301116100d4578281602093845f960137010152565b356001600160801b03811681036100d45790565b908160209103126100d457516001600160a01b03811681036100d45790565b6040516303e21fa960e61b8152602081600481305afa908115610190575f916112c4575090565b6112e6915060203d6020116112e9575b6112de8183611003565b81019061127e565b90565b503d6112d4565b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa908115610190575f9161132e575b506001600160a01b031690565b611347915060203d6020116112e9576112de8183611003565b5f611321565b5f54336001600160a01b0390911603611364573290565b3390565b906001600160801b03168061137b575050565b60209060446001600160a01b0361139361011261129d565b60405163a9059cbb60e01b81526001600160a01b0390961660048701526024860193909352849283915f91165af1908115610190575f9161141c575b50156113d757565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e7366657220575661726100000000000000006044820152606490fd5b611435915060203d60201161037d5761036f8183611003565b5f6113cf565b356001600160e01b0319811681036100d45790565b3d1561147a573d9061146182611219565b9161146f6040519384611003565b82523d5f602084013e565b606090565b6020810161148c816111d3565b906114a4606084019261149e8461126a565b90611368565b5f546001600160a01b0316908161153d575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c6906114f26114ea60408501856111e7565b91909261126a565b60806001600160e01b031961150960a0880161143b565b16956001600160801b0361152a6040519687966060885260608801916110e2565b93166020850152013560408301520390a2565b5f9161154983926111d3565b826115e361155a60408901896111e7565b6115668993929361126a565b61157260a08c0161143b565b604051639649744960e01b602082019081526001600160a01b03909816602482015260a060448201529485936001600160801b03916115b59160c48701916110e2565b9216606484015260808c013560848401526001600160e01b03191660a483015203601f198101835282611003565b51926207a120f16115f2611450565b506115fe575f806114b6565b5050565b5f546001600160a01b03168061167c575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f8011773611677611644602084016111d3565b61165160408501856111e7565b6116606060879593950161126a565b9060405194859460018060a01b0316973585611102565b0390a2565b5f8091838261168d602083016111d3565b61170b61169d60408501856111e7565b92906001600160801b036116f66116b66060890161126a565b6040516374fad4ef60e01b60208201908152993560248201526001600160a01b03909516604486015260806064860152939586949360a4860191906110e2565b9116608483015203601f198101835282611003565b51926207a120f161171a611450565b50611725575f611613565b5056fea2646970667358221220e8ffde07da318ecc08a9745ac59afb1b6bba5e103b0f68dee7310aef6eedaf4d64736f6c634300081c0033","sourceMap":"403:9224:118:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806329336f3914610da657806336a52a1814610d7e578063485cc95514610ce9578063701da98e14610ccc578063704ed54214610bb857806391d5a64c14610b5b5780639cb3300514610b345780639ce110d714610b0c578063a02637b21461043e578063affed0e014610421578063d5624222146101e0578063e43f3433146100d85763f887ea40146100a8575f80fd5b346100d4575f3660031901126100d45760206100c261129d565b6040516001600160a01b039091168152f35b5f80fd5b346100d4575f3660031901126100d4576001546001600160a01b0316801561019b5760249060206001600160a01b0361011761011261129d565b6112f0565b16604051938480926370a0823160e01b82523060048301525afa918215610190575f92610155575b506001600160801b03610153921690611368565b005b91506020823d602011610188575b8161017060209383611003565b810103126100d4579051906001600160801b0361013f565b3d9150610163565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b346100d45760403660031901126100d4576004356001600160401b0381116100d457610210903690600401610f0a565b906024356001600160801b0381168082036100d45760015461023b906001600160a01b031615610f5f565b60045415801590610402575b15610384576102ee575b6004545f1981146102da576020938160017f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c69301600455604051868101913060601b83526034820152603481526102a9605482611003565b519020936102cf6001600160a01b036102c061134d565b16946040519384938885611102565b0390a2604051908152f35b634e487b7160e01b5f52601160045260245ffd5b6103356020826102fc61129d565b6001600160a01b0361030d826112f0565b16905f61031861134d565b6040516323b872dd60e01b8152968795869485936004850161103c565b03925af1801561019057610350915f91610355575b50611066565b610251565b610377915060203d60201161037d575b61036f8183611003565b810190611024565b8561034a565b503d610365565b60405162461bcd60e51b815260206004820152604a60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201527f6d657373616765207965743b20616e6420736f75726365206973206e6f7420696064820152693734ba34b0b634bd32b960b11b608482015260a490fd5b5061040b61134d565b6002546001600160a01b03918216911614610247565b346100d4575f3660031901126100d4576020600454604051908152f35b346100d45760203660031901126100d4576004356001600160401b0381116100d457806004019080360360c06003198201126100d45761048f6001600160a01b0361048761129d565b163314611130565b610498836111d3565b306001600160a01b0390911603610ac7576022190160a4820135818112156100d4578201906004820135906001600160401b0382116100d4578160051b360360248401136100d4575f94919360e2193685900301929060605b868810156106e0576024600589901b87010135858112156100d4576004908701019760208901601f198a3603019260c084126100d45760405160a081018181106001600160401b038211176106cc576040528235815261055360408d01610f4b565b906020810191825260608d01356001600160401b0381116100d4576020908e010136601f820112156100d45760406105a68f926105996080913690602081359101611234565b9383860194855201610f37565b6060840190815297607f1901126100d45760405193604085018581106001600160401b038211176106cc5760405260a08f01358086529e60c00135936001600160e01b0319851685036100d4576001986106836034605460209996876106a99a8c9a8b809b019182528260808201525197519251965191519063ffffffff60e01b905116908a6040519889958287019b8c526001600160601b03199060601b1660408701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016014810184520182611003565b5190206040519582879351918291018585015e8201908382015203018084520182611003565b996106be576106b790611602565b01966104f1565b6106c79061147f565b6106b7565b634e487b7160e01b5f52604160045260245ffd5b60208151910120926084820135908112156100d4578101906004820135926001600160401b0384116100d45760608402360360248401136100d4576060945f5b8581101561086f576004606082028601016060601f1982360301126100d45760405190606082018281106001600160401b038211176106cc5760405260208101359182815260408201996107738b610f4b565b928360208401526060019261078784610f37565b6040819401526040519260208401918683526001600160601b03199060601b1660408501526001600160801b03199060801b166054840152604483526107ce606484611003565b60405192828493516020819201602086015e83019060208201905f8252519283915e016020015f815203601f19810182526108099082611003565b98610813906111d3565b61081c8261126a565b61082591611368565b61082e9061126a565b6040519182526001600160801b0316602082015260407fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578391a1600101610720565b508551602087012090604484019061088782856111e7565b905061096c575b605461092f9260646050936108d66020996108ce6108c560035496602484013580980361093a575b6108bf8d6111d3565b9c6111e7565b9590920161126a565b933691611234565b96896040519889958287019b6001600160601b03199060601b168c5260348701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016030810184520182611003565b519020604051908152f35b876003557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c0809308e6040518a8152a16108b6565b61098061097983866111e7565b3691611234565b6014815103610a73576014015160015495906109a56001600160a01b03881615610f5f565b6001600160a01b03166001600160a01b0319969096168617600155851561019b5760249560206001600160a01b036109de61011261129d565b16604051988980926370a0823160e01b82523060048301525afa968715610190575f97610a3a575b509260646050936108d6605494610a2c61092f986001600160801b0360209d1690611368565b99505093505092505061088e565b965091926020873d602011610a6b575b81610a5760209383611003565b810103126100d45795519592916064610a06565b3d9150610a4a565b60405162461bcd60e51b815260206004820152602660248201527f41646472657373206d757374206265203230206279746573206c6f6e6720696660448201526508195e1a5cdd60d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152601d60248201527f6163746f724964206d757374206265207468697320636f6e74726163740000006044820152606490fd5b346100d4575f3660031901126100d4576002546040516001600160a01b039091168152602090f35b346100d4575f3660031901126100d4575f546040516001600160a01b039091168152602090f35b346100d45760203660031901126100d457610b796004541515610fa3565b6001600160a01b03610b8961134d565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a2005b346100d45760203660031901126100d4576004356001600160801b038116908181036100d457600154610bf4906001600160a01b031615610f5f565b81610c27575b7f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667602083604051908152a1005b906020610c6f92610c3661129d565b6001600160a01b03610c47826112f0565b16905f610c5261134d565b6040516323b872dd60e01b8152978895869485936004850161103c565b03925af190811561019057610cae6020927f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667945f91610cb55750611066565b9150610bfa565b6103779150843d861161037d5761036f8183611003565b346100d4575f3660031901126100d4576020600354604051908152f35b346100d45760403660031901126100d4576004356001600160a01b038116908190036100d4576024356001600160a01b03811691908290036100d457610d386001600160a01b0361048761129d565b60025490610d4f6001600160a01b0383161561117c565b5f5491610d656001600160a01b0384161561117c565b6001600160a01b03199081169190911760025516175f55005b346100d4575f3660031901126100d4576001546040516001600160a01b039091168152602090f35b346100d45760603660031901126100d4576024356001600160401b0381116100d457610dd6903690600401610f0a565b90604435916001600160801b0383168084036100d457600154610e02906001600160a01b031615610f5f565b610e0f6004541515610fa3565b610e5f575b7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f91610e5a6001600160a01b03610e4961134d565b169460405193849360043585611102565b0390a2005b610ea791602084610e6e61129d565b6001600160a01b03610e7f826112f0565b16905f610e8a61134d565b6040516323b872dd60e01b8152988995869485936004850161103c565b03925af1928315610190577fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f93610ee4915f91610eeb5750611066565b9150610e14565b610f04915060203d60201161037d5761036f8183611003565b8661034a565b9181601f840112156100d4578235916001600160401b0383116100d457602083818601950101116100d457565b35906001600160801b03821682036100d457565b35906001600160a01b03821682036100d457565b15610f6657565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b15610faa57565b60405162461bcd60e51b815260206004820152602b60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201526a1b595cdcd859d9481e595d60aa1b6064820152608490fd5b90601f801991011681019081106001600160401b038211176106cc57604052565b908160209103126100d4575180151581036100d45790565b6001600160a01b039182168152911660208201526001600160801b03909116604082015260600190565b1561106d57565b60405162461bcd60e51b815260206004820152604160248201527f6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f7560448201527f6e74206f662057566172612066726f6d20736f7572636520746f20726f7574656064820152603960f91b608482015260a490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b92604092611129916001600160801b039397969786526060602087015260608601916110e2565b9416910152565b1561113757565b60405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f742074686520726f7574657200000000000000006044820152606490fd5b1561118357565b60405162461bcd60e51b815260206004820152602260248201527f696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e604482015261636560f01b6064820152608490fd5b356001600160a01b03811681036100d45790565b903590601e19813603018212156100d457018035906001600160401b0382116100d4576020019181360383136100d457565b6001600160401b0381116106cc57601f01601f191660200190565b92919261124082611219565b9161124e6040519384611003565b8294818452818301116100d4578281602093845f960137010152565b356001600160801b03811681036100d45790565b908160209103126100d457516001600160a01b03811681036100d45790565b6040516303e21fa960e61b8152602081600481305afa908115610190575f916112c4575090565b6112e6915060203d6020116112e9575b6112de8183611003565b81019061127e565b90565b503d6112d4565b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa908115610190575f9161132e575b506001600160a01b031690565b611347915060203d6020116112e9576112de8183611003565b5f611321565b5f54336001600160a01b0390911603611364573290565b3390565b906001600160801b03168061137b575050565b60209060446001600160a01b0361139361011261129d565b60405163a9059cbb60e01b81526001600160a01b0390961660048701526024860193909352849283915f91165af1908115610190575f9161141c575b50156113d757565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e7366657220575661726100000000000000006044820152606490fd5b611435915060203d60201161037d5761036f8183611003565b5f6113cf565b356001600160e01b0319811681036100d45790565b3d1561147a573d9061146182611219565b9161146f6040519384611003565b82523d5f602084013e565b606090565b6020810161148c816111d3565b906114a4606084019261149e8461126a565b90611368565b5f546001600160a01b0316908161153d575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c6906114f26114ea60408501856111e7565b91909261126a565b60806001600160e01b031961150960a0880161143b565b16956001600160801b0361152a6040519687966060885260608801916110e2565b93166020850152013560408301520390a2565b5f9161154983926111d3565b826115e361155a60408901896111e7565b6115668993929361126a565b61157260a08c0161143b565b604051639649744960e01b602082019081526001600160a01b03909816602482015260a060448201529485936001600160801b03916115b59160c48701916110e2565b9216606484015260808c013560848401526001600160e01b03191660a483015203601f198101835282611003565b51926207a120f16115f2611450565b506115fe575f806114b6565b5050565b5f546001600160a01b03168061167c575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f8011773611677611644602084016111d3565b61165160408501856111e7565b6116606060879593950161126a565b9060405194859460018060a01b0316973585611102565b0390a2565b5f8091838261168d602083016111d3565b61170b61169d60408501856111e7565b92906001600160801b036116f66116b66060890161126a565b6040516374fad4ef60e01b60208201908152993560248201526001600160a01b03909516604486015260806064860152939586949360a4860191906110e2565b9116608483015203601f198101835282611003565b51926207a120f161171a611450565b50611725575f611613565b5056fea2646970667358221220e8ffde07da318ecc08a9745ac59afb1b6bba5e103b0f68dee7310aef6eedaf4d64736f6c634300081c0033","sourceMap":"403:9224:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9224:118;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;;;-1:-1:-1;;403:9224:118;;;;;;-1:-1:-1;;;;;403:9224:118;1633:23;;403:9224;;3811:41;;403:9224;-1:-1:-1;;;;;3811:16:118;3818:8;;:::i;:::-;3811:16;:::i;:::-;403:9224;;;;;;;;;;3811:41;;3846:4;403:9224;3811:41;;403:9224;3811:41;;;;;;;403:9224;3811:41;;;403:9224;;-1:-1:-1;;;;;3888:16:118;403:9224;;3888:16;;:::i;:::-;403:9224;3811:41;;;403:9224;3811:41;;403:9224;3811:41;;;;;;403:9224;3811:41;;;:::i;:::-;;;403:9224;;;;;;;-1:-1:-1;;;;;3811:41:118;;;;;-1:-1:-1;3811:41:118;;;403:9224;;;;;;;;;;;;-1:-1:-1;;;403:9224:118;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9224:118;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;2492:57;;-1:-1:-1;;;;;403:9224:118;2500:23;2492:57;:::i;:::-;403:9224;;2204:9;;;:37;;;403:9224;;;;1103:259;;403:9224;;;-1:-1:-1;;403:9224:118;;;;;;;2500:9;3049:57;403:9224;;;;;;2992:40;;;3017:4;;403:9224;;;;;;;;;2992:40;;;;;;:::i;:::-;403:9224;2982:51;;;3049:57;-1:-1:-1;;;;;3078:9:118;;:::i;:::-;403:9224;;;;3049:57;;;;;;:::i;:::-;;;;403:9224;;;;;;;;;;;;;;;;;;1103:259;1191:61;403:9224;1154:8;;;:::i;:::-;-1:-1:-1;;;;;1191:18:118;;;:::i;:::-;403:9224;1223:9;403:9224;1223:9;;:::i;:::-;403:9224;;-1:-1:-1;;;1191:61:118;;403:9224;;;;;;;;1191:61;;;:::i;:::-;;;;;;;;;1266:85;1191:61;403:9224;1191:61;;;1103:259;1266:85;;:::i;:::-;1103:259;;1191:61;;;;403:9224;1191:61;403:9224;1191:61;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;403:9224;;;-1:-1:-1;;;403:9224:118;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9224:118;;;;;;;2204:37;2217:9;;;:::i;:::-;2230:11;403:9224;-1:-1:-1;;;;;403:9224:118;;;;;2217:24;2204:37;;403:9224;;;;;;-1:-1:-1;;403:9224:118;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9224:118;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;;;;;;860:59;-1:-1:-1;;;;;882:8:118;;:::i;:::-;403:9224;868:10;:22;860:59;:::i;:::-;4564:19;;;:::i;:::-;4595:4;-1:-1:-1;;;;;403:9224:118;;;4564:36;403:9224;;-1:-1:-1;;403:9224:118;4733:20;;;403:9224;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;;;;5852:27;;-1:-1:-1;;403:9224:118;;;;;;5852:27;403:9224;5932:3;5910:20;;;;;;403:9224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4733:20;403:9224;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;403:9224:118;;;;;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;4733:20;403:9224;;;;;;;;;;;-1:-1:-1;;;;;;403:9224:118;;;;;;;;4079:243:122;403:9224:118;;;;;;;;;;;;;;;;;;;;;;;;;4178:15:122;;403:9224:118;;;;;;;;;;;;;;;4079:243:122;;;;;;403:9224:118;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;;;;4079:243:122;;;;;;;;;;:::i;:::-;403:9224:118;4056:276:122;;403:9224:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6168:28;;;6238:7;;;:::i;:::-;403:9224;5895:13;;;6164:162;6303:7;;;:::i;:::-;6164:162;;403:9224;;;;;;;;;;;;5910:20;403:9224;;;;;6353:25;4848:23;;;;403:9224;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;;;8101:13;403:9224;8136:3;8116:18;;;;;;403:9224;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;6114:65:122;403:9224:118;6114:65:122;;403:9224:118;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;6114:65:122;;;;;;:::i;:::-;403:9224:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8321:17;;;;:::i;:::-;8340:11;;;:::i;:::-;;;;:::i;:::-;8402;;;:::i;:::-;403:9224;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;8372:42;;;403:9224;;8101:13;;8116:18;-1:-1:-1;403:9224:118;;;;;8442:27;;403:9224;4932:21;;;;;;;:::i;:::-;:33;;4928:126;;8096:329;403:9224;4813:101:122;403:9224:118;6114:65:122;403:9224:118;;;;;5446:26;5411:21;5119:9;403:9224;5132:24;;;;403:9224;5119:37;;;5115:110;;8096:329;5340:19;;;:::i;:::-;5411:21;;:::i;:::-;5446:26;;;;;:::i;:::-;403:9224;;;;:::i;:::-;;;;;4813:101:122;;;;;;403:9224:118;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;6114:65:122;403:9224:118;;;4848:23;403:9224;;;4813:101:122;;403:9224:118;4813:101:122;;;;;;;:::i;:::-;403:9224:118;4790:134:122;;403:9224:118;;;;;;5115:110;403:9224;5119:9;403:9224;8936:23;403:9224;;;;;;8936:23;5115:110;;4928:126;403:9224;5020:21;;;;:::i;:::-;403:9224;;;:::i;:::-;3593:2:122;403:9224:118;;3578:17:122;403:9224:118;;3593:2:122;3672:77;;403:9224:118;;;;2492:57;-1:-1:-1;;;;;403:9224:118;;2500:23;2492:57;:::i;:::-;-1:-1:-1;;;;;403:9224:118;-1:-1:-1;;;;;;403:9224:118;;;;;;;;1633:23;;403:9224;;3811:41;;403:9224;-1:-1:-1;;;;;3811:16:118;3818:8;;:::i;3811:16::-;403:9224;;;;;;;;;;3811:41;;4595:4;403:9224;3811:41;;403:9224;3811:41;;;;;;;403:9224;3811:41;;;4928:126;403:9224;;6114:65:122;403:9224:118;;;;;3888:16;4813:101:122;403:9224:118;-1:-1:-1;;;;;403:9224:118;;;3888:16;;:::i;:::-;4928:126;;;;;;;;;;;3811:41;;;;;403:9224;3811:41;;403:9224;3811:41;;;;;;403:9224;3811:41;;;:::i;:::-;;;403:9224;;;;;;;3811:41;403:9224;6114:65:122;3811:41:118;;;;;-1:-1:-1;3811:41:118;;403:9224;;;-1:-1:-1;;;403:9224:118;;;;;;;;;;;;;;;;;-1:-1:-1;;;6114:65:122;403:9224:118;;;4848:23;;403:9224;;;;-1:-1:-1;;;403:9224:118;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9224:118;;;;664:26;403:9224;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;-1:-1:-1;;403:9224:118;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;-1:-1:-1;;403:9224:118;;;;1874:65;403:9224;;1882:9;;1874:65;:::i;:::-;-1:-1:-1;;;;;3536:9:118;;:::i;:::-;403:9224;3501:45;403:9224;;;;;;;3501:45;403:9224;;;;;;;-1:-1:-1;;403:9224:118;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;2492:57;;-1:-1:-1;;;;;403:9224:118;2500:23;2492:57;:::i;:::-;1107:10;1103:259;;403:9224;3667:39;403:9224;;;;;;;3667:39;403:9224;1103:259;1154:8;403:9224;1191:61;1154:8;;;:::i;:::-;-1:-1:-1;;;;;1191:18:118;;;:::i;:::-;403:9224;1223:9;403:9224;1223:9;;:::i;:::-;403:9224;;-1:-1:-1;;;1191:61:118;;403:9224;;;;;;;;1191:61;;;:::i;:::-;;;;;;;;;;1266:85;403:9224;1191:61;3667:39;1191:61;403:9224;1191:61;;;1266:85;;:::i;:::-;1103:259;;;;1191:61;;;;;;;;;;;;;;:::i;403:9224::-;;;;;;-1:-1:-1;;403:9224:118;;;;;696:24;403:9224;;;;;;;;;;;;;-1:-1:-1;;403:9224:118;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;860:59;-1:-1:-1;;;;;882:8:118;;:::i;860:59::-;4066:11;403:9224;;4058:72;-1:-1:-1;;;;;403:9224:118;;4066:25;4058:72;:::i;:::-;403:9224;;;4140:68;-1:-1:-1;;;;;403:9224:118;;4148:21;4140:68;:::i;:::-;-1:-1:-1;;;;;;403:9224:118;;;;;;;4066:11;403:9224;;;;;;;;;;;;-1:-1:-1;;403:9224:118;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;-1:-1:-1;;403:9224:118;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;2492:57;;-1:-1:-1;;;;;403:9224:118;2500:23;2492:57;:::i;:::-;1874:65;403:9224;;1882:9;;1874:65;:::i;:::-;1103:259;;403:9224;3338:63;;;-1:-1:-1;;;;;3373:9:118;;:::i;:::-;403:9224;;;;;;;;;3338:63;;:::i;:::-;;;;403:9224;1103:259;1191:61;1154:8;403:9224;1154:8;;;:::i;:::-;-1:-1:-1;;;;;1191:18:118;;;:::i;:::-;403:9224;1223:9;403:9224;1223:9;;:::i;:::-;403:9224;;-1:-1:-1;;;1191:61:118;;403:9224;;;;;;;;1191:61;;;:::i;:::-;;;;;;;;;;3338:63;1191:61;1266:85;1191:61;403:9224;1191:61;;;1266:85;;:::i;:::-;1103:259;;;;1191:61;;;;403:9224;1191:61;403:9224;1191:61;;;;;;;:::i;:::-;;;;403:9224;;;;;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;403:9224:118;;;;;;:::o;:::-;;;-1:-1:-1;;;;;403:9224:118;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:9224:118;;;;;;;;;;;;-1:-1:-1;;;403:9224:118;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;403:9224:118;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9224:118;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:9224:118;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9224:118;;;;;;;;;;;;;;;;;;;;-1:-1:-1;403:9224:118;;;;;;;;-1:-1:-1;;403:9224:118;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:9224:118;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;403:9224:118;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9224:118;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;403:9224:118;;;;;;-1:-1:-1;;403:9224:118;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;403:9224:118;;;;;;:::o;:::-;;-1:-1:-1;;;;;403:9224:118;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;:::o;2606:108::-;403:9224;;-1:-1:-1;;;2671:36:118;;;403:9224;2671:36;403:9224;2692:4;2671:36;;;;;;;-1:-1:-1;2671:36:118;;;2664:43;2606:108;:::o;2671:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;2606:108;:::o;2671:36::-;;;;;9006:182;403:9224;;-1:-1:-1;;;9108:33:118;;403:9224;9108:33;;403:9224;;9108:33;;403:9224;;-1:-1:-1;;;;;403:9224:118;9108:33;;;;;;;-1:-1:-1;9108:33:118;;;9006:182;-1:-1:-1;;;;;;403:9224:118;;9006:182::o;9108:33::-;;;;;;;;;;;;;;:::i;:::-;;;;9194:182;403:9224;;9258:10;-1:-1:-1;;;;;403:9224:118;;;9258:21;403:9224;;9302:9;9295:16;:::o;9254:116::-;9258:10;9342:17;:::o;9382:243::-;;-1:-1:-1;;;;;403:9224:118;9464:10;9460:159;;9382:243;;:::o;9460:159::-;403:9224;;9505:45;-1:-1:-1;;;;;9505:16:118;9512:8;;:::i;9505:16::-;403:9224;;-1:-1:-1;;;9505:45:118;;-1:-1:-1;;;;;403:9224:118;;;9505:45;;;403:9224;;;;;;;;;;;;9473:1;;403:9224;9505:45;;;;;;;9473:1;9505:45;;;9460:159;403:9224;;;;9382:243::o;403:9224::-;;;-1:-1:-1;;;403:9224:118;;;9505:45;403:9224;;;;;;;;;9505:45;403:9224;;;;;;9505:45;;;;403:9224;9505:45;403:9224;9505:45;;;;;;;:::i;:::-;;;;403:9224;;-1:-1:-1;;;;;;403:9224:118;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;403:9224:118;;;;:::o;:::-;;;:::o;7172:784::-;7264:20;;;;;;:::i;:::-;7286:14;;;;;;;;;:::i;:::-;;;:::i;:::-;7316:7;403:9224;-1:-1:-1;;;;;403:9224:118;;;7312:529;;7172:784;7862:16;;7856:93;7862:16;7880:14;7862:16;;;;;;:::i;:::-;7880:14;;;;:::i;:::-;7896:21;-1:-1:-1;;;;;;7922:26:118;;;;;:::i;:::-;403:9224;;-1:-1:-1;;;;;403:9224:118;7862:16;403:9224;;;;7286:14;403:9224;;7286:14;403:9224;;;;:::i;:::-;;;7264:20;403:9224;;;7896:21;403:9224;7862:16;403:9224;;;7856:93;;;7172:784::o;7312:529::-;7316:7;7470:20;;;;;:::i;:::-;7508:16;7377:279;7508:16;;;;;;:::i;:::-;7542:14;;;;;;:::i;:::-;7616:26;;;;;:::i;:::-;7508:16;403:9224;-1:-1:-1;;;7264:20:118;7377:279;;;;;-1:-1:-1;;;;;403:9224:118;;;7377:279;;;403:9224;;;;;;;;;-1:-1:-1;;;;;403:9224:118;;;;;;;;:::i;:::-;;;;;;;7574:21;;;403:9224;;;;;-1:-1:-1;;;;;;403:9224:118;;;;;7377:279;-1:-1:-1;;7377:279:118;;;;;;:::i;:::-;7728:36;;7746:7;7728:36;;;:::i;:::-;;7779:52;;7312:529;;;;7779:52;7810:7;;:::o;6444:653::-;6529:7;403:9224;-1:-1:-1;;;;;403:9224:118;;6525:474;;6444:653;7035:20;7014:76;;7035:20;;;;;:::i;:::-;7057:16;;;;;;:::i;:::-;7075:14;;;;;;;;:::i;:::-;403:9224;7057:16;403:9224;;;;;;;;;;;;7014:76;;:::i;:::-;;;;6444:653::o;6525:474::-;6529:7;6714:20;;;;;;;;;:::i;:::-;6590:224;6752:16;;;;;;:::i;:::-;6786:14;;-1:-1:-1;;;;;403:9224:118;6786:14;;;;;:::i;:::-;6752:16;403:9224;-1:-1:-1;;;6714:20:118;6590:224;;;;;403:9224;;6590:224;;;403:9224;-1:-1:-1;;;;;403:9224:118;;;;;;;;;;;;;;;;;;;;;6590:224;403:9224;:::i;:::-;;;;;;;6590:224;403:9224;;6590:224;;;;;;:::i;:::-;6886:36;;6904:7;6886:36;;;:::i;:::-;;6937:52;;6525:474;;;6937:52;6968:7;:::o","linkReferences":{}},"methodIdentifiers":{"claimValue(bytes32)":"91d5a64c","decoder()":"9cb33005","executableBalanceTopUp(uint128)":"704ed542","inheritor()":"36a52a18","initialize(address,address)":"485cc955","initializer()":"9ce110d7","nonce()":"affed0e0","performStateTransition((address,bytes32,bytes,uint128,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4))[]))":"a02637b2","router()":"f887ea40","sendMessage(bytes,uint128)":"d5624222","sendReply(bytes32,bytes,uint128)":"29336f39","stateHash()":"701da98e","transferLockedValueToInheritor()":"e43f3433"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[],\"name\":\"decoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceTopUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inheritor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_initializer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_decoder\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"inheritor\",\"type\":\"bytes\"},{\"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 Gear.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 Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition\",\"name\":\"_transition\",\"type\":\"tuple\"}],\"name\":\"performStateTransition\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":\"nonpayable\",\"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\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferLockedValueToInheritor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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\":{},\"stateVariables\":{\"initializer\":{\"details\":\"This nonce is the source for message ids unique generations. Must be bumped on each send. Zeroed nonce is always represent init message by eligible account.\"}},\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0\",\"dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/IMirror.sol\":{\"keccak256\":\"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6\",\"dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm\"]},\"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\":\"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17\",\"dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Mirror.sol\":{\"keccak256\":\"0x1e01e720823be3a2d33f0effc8d42a99169679fea51aef0adc5ca031e30e69d7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://28da849adf0aab09d6ed037038a71e6fc4f1d83259f383f734d81c3609911718\",\"dweb:/ipfs/QmXwCsLHqZ8wsjGf3Z62wnniNGR6BbtnfVZKhqFujqew9T\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0xad62fddfe4d63c9095ec7b382357012259e108fd565fb0dd28071d9905ce5367\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://51f471d58a8ec6631cefb597a7695ab91cca562e2a37c4e9fe09a291cf02c5be\",\"dweb:/ipfs/QmWrq9Gn1qgNG3kvFQoe5ZeyMWGgybaBCFGCcSZeRGwALH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"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":[],"stateMutability":"view","type":"function","name":"decoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"executableBalanceTopUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"inheritor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_initializer","type":"address"},{"internalType":"address","name":"_decoder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"initializer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct Gear.StateTransition","name":"_transition","type":"tuple","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"bytes","name":"inheritor","type":"bytes"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"struct Gear.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 Gear.Message[]","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 Gear.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]}]}]}],"stateMutability":"nonpayable","type":"function","name":"performStateTransition","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"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":"nonpayable","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":"nonpayable","type":"function","name":"sendReply"},{"inputs":[],"stateMutability":"view","type":"function","name":"stateHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"transferLockedValueToInheritor"}],"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/","symbiotic-core/=lib/symbiotic-core/"],"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":"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae","urls":["bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0","dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/IMirror.sol":{"keccak256":"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e","urls":["bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6","dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm"],"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":"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8","urls":["bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17","dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Mirror.sol":{"keccak256":"0x1e01e720823be3a2d33f0effc8d42a99169679fea51aef0adc5ca031e30e69d7","urls":["bzz-raw://28da849adf0aab09d6ed037038a71e6fc4f1d83259f383f734d81c3609911718","dweb:/ipfs/QmXwCsLHqZ8wsjGf3Z62wnniNGR6BbtnfVZKhqFujqew9T"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xad62fddfe4d63c9095ec7b382357012259e108fd565fb0dd28071d9905ce5367","urls":["bzz-raw://51f471d58a8ec6631cefb597a7695ab91cca562e2a37c4e9fe09a291cf02c5be","dweb:/ipfs/QmWrq9Gn1qgNG3kvFQoe5ZeyMWGgybaBCFGCcSZeRGwALH"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[{"astId":67022,"contract":"src/Mirror.sol:Mirror","label":"decoder","offset":0,"slot":"0","type":"t_address"},{"astId":67024,"contract":"src/Mirror.sol:Mirror","label":"inheritor","offset":0,"slot":"1","type":"t_address"},{"astId":67027,"contract":"src/Mirror.sol:Mirror","label":"initializer","offset":0,"slot":"2","type":"t_address"},{"astId":67029,"contract":"src/Mirror.sol:Mirror","label":"stateHash","offset":0,"slot":"3","type":"t_bytes32"},{"astId":67031,"contract":"src/Mirror.sol:Mirror","label":"nonce","offset":0,"slot":"4","type":"t_uint256"}],"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":67750,"exportedSymbols":{"Clones":[42512],"Gear":[69716],"IMirror":[65176],"IMirrorDecoder":[65211],"IMirrorProxy":[65219],"IRouter":[65461],"IWrappedVara":[65472],"Mirror":[67749]},"nodeType":"SourceUnit","src":"39:9589:118","nodes":[{"id":67004,"nodeType":"PragmaDirective","src":"39:24:118","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":67006,"nodeType":"ImportDirective","src":"65:48:118","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":67750,"sourceUnit":65220,"symbolAliases":[{"foreign":{"id":67005,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65219,"src":"73:12:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67008,"nodeType":"ImportDirective","src":"114:38:118","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":67750,"sourceUnit":65177,"symbolAliases":[{"foreign":{"id":67007,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65176,"src":"122:7:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67010,"nodeType":"ImportDirective","src":"153:38:118","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":67750,"sourceUnit":65462,"symbolAliases":[{"foreign":{"id":67009,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65461,"src":"161:7:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67012,"nodeType":"ImportDirective","src":"192:48:118","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":67750,"sourceUnit":65473,"symbolAliases":[{"foreign":{"id":67011,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65472,"src":"200:12:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67014,"nodeType":"ImportDirective","src":"241:52:118","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":67750,"sourceUnit":65212,"symbolAliases":[{"foreign":{"id":67013,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65211,"src":"249:14:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67016,"nodeType":"ImportDirective","src":"294:64:118","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":67750,"sourceUnit":42513,"symbolAliases":[{"foreign":{"id":67015,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"302:6:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67018,"nodeType":"ImportDirective","src":"359:42:118","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"./libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":67750,"sourceUnit":69717,"symbolAliases":[{"foreign":{"id":67017,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"367:4:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67749,"nodeType":"ContractDefinition","src":"403:9224:118","nodes":[{"id":67022,"nodeType":"VariableDeclaration","src":"436:22:118","nodes":[],"baseFunctions":[65129],"constant":false,"functionSelector":"9cb33005","mutability":"mutable","name":"decoder","nameLocation":"451:7:118","scope":67749,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67021,"name":"address","nodeType":"ElementaryTypeName","src":"436:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67024,"nodeType":"VariableDeclaration","src":"464:24:118","nodes":[],"baseFunctions":[65114],"constant":false,"functionSelector":"36a52a18","mutability":"mutable","name":"inheritor","nameLocation":"479:9:118","scope":67749,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67023,"name":"address","nodeType":"ElementaryTypeName","src":"464:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67027,"nodeType":"VariableDeclaration","src":"664:26:118","nodes":[],"constant":false,"documentation":{"id":67025,"nodeType":"StructuredDocumentation","src":"494:165:118","text":"@dev This nonce is the source for message ids unique generations. Must be bumped on each send. Zeroed nonce is always represent init message by eligible account."},"functionSelector":"9ce110d7","mutability":"mutable","name":"initializer","nameLocation":"679:11:118","scope":67749,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67026,"name":"address","nodeType":"ElementaryTypeName","src":"664:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67029,"nodeType":"VariableDeclaration","src":"696:24:118","nodes":[],"baseFunctions":[65109],"constant":false,"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"711:9:118","scope":67749,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67028,"name":"bytes32","nodeType":"ElementaryTypeName","src":"696:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":67031,"nodeType":"VariableDeclaration","src":"726:20:118","nodes":[],"baseFunctions":[65119],"constant":false,"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"741:5:118","scope":67749,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67030,"name":"uint256","nodeType":"ElementaryTypeName","src":"726:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":67045,"nodeType":"ModifierDefinition","src":"828:109:118","nodes":[],"body":{"id":67044,"nodeType":"Block","src":"850:87:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67035,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"868:3:118","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":67036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"872:6:118","memberName":"sender","nodeType":"MemberAccess","src":"868:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":67037,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67153,"src":"882:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"882:8:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"868:22:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"63616c6c6572206973206e6f742074686520726f75746572","id":67040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"892:26:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_198bece7548b89eb58a1e57e2a5c5ba93b63a70943a48214dc1508db322b92d3","typeString":"literal_string \"caller is not the router\""},"value":"caller is not the router"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_198bece7548b89eb58a1e57e2a5c5ba93b63a70943a48214dc1508db322b92d3","typeString":"literal_string \"caller is not the router\""}],"id":67034,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"860:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"860:59:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67042,"nodeType":"ExpressionStatement","src":"860:59:118"},{"id":67043,"nodeType":"PlaceholderStatement","src":"929:1:118"}]},"documentation":{"id":67032,"nodeType":"StructuredDocumentation","src":"753:70:118","text":"@dev Only the router can call functions marked with this modifier."},"name":"onlyRouter","nameLocation":"837:10:118","parameters":{"id":67033,"nodeType":"ParameterList","parameters":[],"src":"847:2:118"},"virtual":false,"visibility":"internal"},{"id":67079,"nodeType":"ModifierDefinition","src":"1053:326:118","nodes":[],"body":{"id":67078,"nodeType":"Block","src":"1093:286:118","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":67052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67050,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67048,"src":"1107:5:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":67051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1116:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1107:10:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67076,"nodeType":"IfStatement","src":"1103:259:118","trueBody":{"id":67075,"nodeType":"Block","src":"1119:243:118","statements":[{"assignments":[67054],"declarations":[{"constant":false,"id":67054,"mutability":"mutable","name":"routerAddr","nameLocation":"1141:10:118","nodeType":"VariableDeclaration","scope":67075,"src":"1133:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67053,"name":"address","nodeType":"ElementaryTypeName","src":"1133:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":67057,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":67055,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67153,"src":"1154:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1154:8:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1133:29:118"},{"assignments":[67059],"declarations":[{"constant":false,"id":67059,"mutability":"mutable","name":"success","nameLocation":"1181:7:118","nodeType":"VariableDeclaration","scope":67075,"src":"1176:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67058,"name":"bool","nodeType":"ElementaryTypeName","src":"1176:4:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":67069,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":67064,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67719,"src":"1223:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1223:9:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67066,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67054,"src":"1234:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67067,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67048,"src":"1246:5:118","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":[{"id":67061,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67054,"src":"1198:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67060,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67700,"src":"1191:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$65472_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":67062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1191:18:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65472","typeString":"contract IWrappedVara"}},"id":67063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1210:12:118","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":43812,"src":"1191:31:118","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":67068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1191:61:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"1176:76:118"},{"expression":{"arguments":[{"id":67071,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67059,"src":"1274:7:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f756e74206f662057566172612066726f6d20736f7572636520746f20726f75746572","id":67072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1283:67:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_89834f4f5b676caeda9aeacc6e70651fe8c874cb9d7867ce1578400f765c69dd","typeString":"literal_string \"failed to transfer non-zero amount of WVara from source to router\""},"value":"failed to transfer non-zero amount of WVara from source to router"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_89834f4f5b676caeda9aeacc6e70651fe8c874cb9d7867ce1578400f765c69dd","typeString":"literal_string \"failed to transfer non-zero amount of WVara from source to router\""}],"id":67070,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1266:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1266:85:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67074,"nodeType":"ExpressionStatement","src":"1266:85:118"}]}},{"id":67077,"nodeType":"PlaceholderStatement","src":"1371:1:118"}]},"documentation":{"id":67046,"nodeType":"StructuredDocumentation","src":"943:105:118","text":"@dev Non-zero value must be transferred from source to router in functions marked with this modifier."},"name":"retrievingValue","nameLocation":"1062:15:118","parameters":{"id":67049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67048,"mutability":"mutable","name":"value","nameLocation":"1086:5:118","nodeType":"VariableDeclaration","scope":67079,"src":"1078:13:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67047,"name":"uint128","nodeType":"ElementaryTypeName","src":"1078:7:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1077:15:118"},"virtual":false,"visibility":"internal"},{"id":67094,"nodeType":"ModifierDefinition","src":"1589:115:118","nodes":[],"body":{"id":67093,"nodeType":"Block","src":"1615:89:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67083,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67024,"src":"1633:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":67086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1654:1:118","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":67085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1646:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67084,"name":"address","nodeType":"ElementaryTypeName","src":"1646:7:118","typeDescriptions":{}}},"id":67087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1646:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1633:23:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973206e6f74207465726d696e61746564","id":67089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1658:27:118","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":67082,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1625:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1625:61:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67091,"nodeType":"ExpressionStatement","src":"1625:61:118"},{"id":67092,"nodeType":"PlaceholderStatement","src":"1696:1:118"}]},"documentation":{"id":67080,"nodeType":"StructuredDocumentation","src":"1488:96:118","text":"@dev Functions marked with this modifier can be called only after the program is terminated."},"name":"whenTerminated","nameLocation":"1598:14:118","parameters":{"id":67081,"nodeType":"ParameterList","parameters":[],"src":"1612:2:118"},"virtual":false,"visibility":"internal"},{"id":67106,"nodeType":"ModifierDefinition","src":"1830:127:118","nodes":[],"body":{"id":67105,"nodeType":"Block","src":"1864:93:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67098,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67031,"src":"1882:5:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":67099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1890:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1882:9:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a6572206861736e2774206372656174656420696e6974206d65737361676520796574","id":67101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1893:45:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_65d3f165ecb53a71c4baab7e3c64d50628aa4b4da22aa56421c8898d77a0af21","typeString":"literal_string \"initializer hasn't created init message yet\""},"value":"initializer hasn't created init message yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_65d3f165ecb53a71c4baab7e3c64d50628aa4b4da22aa56421c8898d77a0af21","typeString":"literal_string \"initializer hasn't created init message yet\""}],"id":67097,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1874:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1874:65:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67103,"nodeType":"ExpressionStatement","src":"1874:65:118"},{"id":67104,"nodeType":"PlaceholderStatement","src":"1949:1:118"}]},"documentation":{"id":67095,"nodeType":"StructuredDocumentation","src":"1710:115:118","text":"@dev Functions marked with this modifier can be called only after the initializer has created the init message."},"name":"whenInitMessageCreated","nameLocation":"1839:22:118","parameters":{"id":67096,"nodeType":"ParameterList","parameters":[],"src":"1861:2:118"},"virtual":false,"visibility":"internal"},{"id":67123,"nodeType":"ModifierDefinition","src":"2122:237:118","nodes":[],"body":{"id":67122,"nodeType":"Block","src":"2173:186:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":67117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67110,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67031,"src":"2204:5:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":67111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2212:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2204:9:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":67113,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67719,"src":"2217:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2217:9:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":67115,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67027,"src":"2230:11:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2217:24:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2204:37:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a6572206861736e2774206372656174656420696e6974206d657373616765207965743b20616e6420736f75726365206973206e6f7420696e697469616c697a6572","id":67118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2255:76:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_30f0ecacdc4f043fe4536cec8ec5dce9f84d0c03c073a67b932c97032eee9e08","typeString":"literal_string \"initializer hasn't created init message yet; and source is not initializer\""},"value":"initializer hasn't created init message yet; and source is not initializer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30f0ecacdc4f043fe4536cec8ec5dce9f84d0c03c073a67b932c97032eee9e08","typeString":"literal_string \"initializer hasn't created init message yet; and source is not initializer\""}],"id":67109,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2183:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2183:158:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67120,"nodeType":"ExpressionStatement","src":"2183:158:118"},{"id":67121,"nodeType":"PlaceholderStatement","src":"2351:1:118"}]},"documentation":{"id":67107,"nodeType":"StructuredDocumentation","src":"1963:154:118","text":"@dev Functions marked with this modifier can be called only after the initializer has created the init message or from the initializer (first access)."},"name":"whenInitMessageCreatedOrFromInitializer","nameLocation":"2131:39:118","parameters":{"id":67108,"nodeType":"ParameterList","parameters":[],"src":"2170:2:118"},"virtual":false,"visibility":"internal"},{"id":67138,"nodeType":"ModifierDefinition","src":"2459:108:118","nodes":[],"body":{"id":67137,"nodeType":"Block","src":"2482:85:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67127,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67024,"src":"2500:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":67130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2521:1:118","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":67129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2513:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67128,"name":"address","nodeType":"ElementaryTypeName","src":"2513:7:118","typeDescriptions":{}}},"id":67131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2513:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2500:23:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973207465726d696e61746564","id":67133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2525:23:118","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":67126,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2492:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2492:57:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67135,"nodeType":"ExpressionStatement","src":"2492:57:118"},{"id":67136,"nodeType":"PlaceholderStatement","src":"2559:1:118"}]},"documentation":{"id":67124,"nodeType":"StructuredDocumentation","src":"2365:89:118","text":"@dev Functions marked with this modifier can be called only if the program is active."},"name":"whileActive","nameLocation":"2468:11:118","parameters":{"id":67125,"nodeType":"ParameterList","parameters":[],"src":"2479:2:118"},"virtual":false,"visibility":"internal"},{"id":67153,"nodeType":"FunctionDefinition","src":"2606:108:118","nodes":[],"body":{"id":67152,"nodeType":"Block","src":"2654:60:118","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":67146,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2692:4:118","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67749","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67749","typeString":"contract Mirror"}],"id":67145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2684:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67144,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:118","typeDescriptions":{}}},"id":67147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2684:13:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67143,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65219,"src":"2671:12:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorProxy_$65219_$","typeString":"type(contract IMirrorProxy)"}},"id":67148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2671:27:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorProxy_$65219","typeString":"contract IMirrorProxy"}},"id":67149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2699:6:118","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":65218,"src":"2671:34:118","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":67150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2671:36:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67142,"id":67151,"nodeType":"Return","src":"2664:43:118"}]},"baseFunctions":[65124],"functionSelector":"f887ea40","implemented":true,"kind":"function","modifiers":[],"name":"router","nameLocation":"2615:6:118","parameters":{"id":67139,"nodeType":"ParameterList","parameters":[],"src":"2621:2:118"},"returnParameters":{"id":67142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67153,"src":"2645:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67140,"name":"address","nodeType":"ElementaryTypeName","src":"2645:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2644:9:118"},"scope":67749,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":67194,"nodeType":"FunctionDefinition","src":"2750:383:118","nodes":[],"body":{"id":67193,"nodeType":"Block","src":"2959:174:118","nodes":[],"statements":[{"assignments":[67170],"declarations":[{"constant":false,"id":67170,"mutability":"mutable","name":"id","nameLocation":"2977:2:118","nodeType":"VariableDeclaration","scope":67193,"src":"2969:10:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67169,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2969:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":67182,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":67176,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3017:4:118","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67749","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67749","typeString":"contract Mirror"}],"id":67175,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3009:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67174,"name":"address","nodeType":"ElementaryTypeName","src":"3009:7:118","typeDescriptions":{}}},"id":67177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3009:13:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3024:7:118","subExpression":{"id":67178,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67031,"src":"3024:5:118","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":67172,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2992:3:118","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":67173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2996:12:118","memberName":"encodePacked","nodeType":"MemberAccess","src":"2992:16:118","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":67180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2992:40:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":67171,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2982:9:118","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":67181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2982:51:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2969:64:118"},{"eventCall":{"arguments":[{"id":67184,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67170,"src":"3074:2:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":67185,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67719,"src":"3078:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3078:9:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67187,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67155,"src":"3089:8:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":67188,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67157,"src":"3099:6:118","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":67183,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65052,"src":"3049:24:118","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":67189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3049:57:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67190,"nodeType":"EmitStatement","src":"3044:62:118"},{"expression":{"id":67191,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67170,"src":"3124:2:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":67168,"id":67192,"nodeType":"Return","src":"3117:9:118"}]},"baseFunctions":[65138],"functionSelector":"d5624222","implemented":true,"kind":"function","modifiers":[{"id":67160,"kind":"modifierInvocation","modifierName":{"id":67159,"name":"whileActive","nameLocations":["2837:11:118"],"nodeType":"IdentifierPath","referencedDeclaration":67138,"src":"2837:11:118"},"nodeType":"ModifierInvocation","src":"2837:11:118"},{"id":67162,"kind":"modifierInvocation","modifierName":{"id":67161,"name":"whenInitMessageCreatedOrFromInitializer","nameLocations":["2857:39:118"],"nodeType":"IdentifierPath","referencedDeclaration":67123,"src":"2857:39:118"},"nodeType":"ModifierInvocation","src":"2857:39:118"},{"arguments":[{"id":67164,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67157,"src":"2921:6:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":67165,"kind":"modifierInvocation","modifierName":{"id":67163,"name":"retrievingValue","nameLocations":["2905:15:118"],"nodeType":"IdentifierPath","referencedDeclaration":67079,"src":"2905:15:118"},"nodeType":"ModifierInvocation","src":"2905:23:118"}],"name":"sendMessage","nameLocation":"2759:11:118","parameters":{"id":67158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67155,"mutability":"mutable","name":"_payload","nameLocation":"2786:8:118","nodeType":"VariableDeclaration","scope":67194,"src":"2771:23:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":67154,"name":"bytes","nodeType":"ElementaryTypeName","src":"2771:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":67157,"mutability":"mutable","name":"_value","nameLocation":"2804:6:118","nodeType":"VariableDeclaration","scope":67194,"src":"2796:14:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67156,"name":"uint128","nodeType":"ElementaryTypeName","src":"2796:7:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2770:41:118"},"returnParameters":{"id":67168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67167,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67194,"src":"2946:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67166,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2946:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2945:9:118"},"scope":67749,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67219,"nodeType":"FunctionDefinition","src":"3139:269:118","nodes":[],"body":{"id":67218,"nodeType":"Block","src":"3323:85:118","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":67211,"name":"_repliedTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67196,"src":"3361:10:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":67212,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67719,"src":"3373:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3373:9:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67214,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67198,"src":"3384:8:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":67215,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67200,"src":"3394:6:118","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":67210,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65063,"src":"3338:22:118","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":67216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3338:63:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67217,"nodeType":"EmitStatement","src":"3333:68:118"}]},"baseFunctions":[65147],"functionSelector":"29336f39","implemented":true,"kind":"function","modifiers":[{"id":67203,"kind":"modifierInvocation","modifierName":{"id":67202,"name":"whileActive","nameLocations":["3244:11:118"],"nodeType":"IdentifierPath","referencedDeclaration":67138,"src":"3244:11:118"},"nodeType":"ModifierInvocation","src":"3244:11:118"},{"id":67205,"kind":"modifierInvocation","modifierName":{"id":67204,"name":"whenInitMessageCreated","nameLocations":["3264:22:118"],"nodeType":"IdentifierPath","referencedDeclaration":67106,"src":"3264:22:118"},"nodeType":"ModifierInvocation","src":"3264:22:118"},{"arguments":[{"id":67207,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67200,"src":"3311:6:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":67208,"kind":"modifierInvocation","modifierName":{"id":67206,"name":"retrievingValue","nameLocations":["3295:15:118"],"nodeType":"IdentifierPath","referencedDeclaration":67079,"src":"3295:15:118"},"nodeType":"ModifierInvocation","src":"3295:23:118"}],"name":"sendReply","nameLocation":"3148:9:118","parameters":{"id":67201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67196,"mutability":"mutable","name":"_repliedTo","nameLocation":"3166:10:118","nodeType":"VariableDeclaration","scope":67219,"src":"3158:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67195,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3158:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":67198,"mutability":"mutable","name":"_payload","nameLocation":"3193:8:118","nodeType":"VariableDeclaration","scope":67219,"src":"3178:23:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":67197,"name":"bytes","nodeType":"ElementaryTypeName","src":"3178:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":67200,"mutability":"mutable","name":"_value","nameLocation":"3211:6:118","nodeType":"VariableDeclaration","scope":67219,"src":"3203:14:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67199,"name":"uint128","nodeType":"ElementaryTypeName","src":"3203:7:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3157:61:118"},"returnParameters":{"id":67209,"nodeType":"ParameterList","parameters":[],"src":"3323:0:118"},"scope":67749,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67233,"nodeType":"FunctionDefinition","src":"3414:139:118","nodes":[],"body":{"id":67232,"nodeType":"Block","src":"3486:67:118","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":67227,"name":"_claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67221,"src":"3524:10:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":67228,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67719,"src":"3536:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3536:9:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":67226,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65070,"src":"3501:22:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":67230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3501:45:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67231,"nodeType":"EmitStatement","src":"3496:50:118"}]},"baseFunctions":[65152],"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[{"id":67224,"kind":"modifierInvocation","modifierName":{"id":67223,"name":"whenInitMessageCreated","nameLocations":["3463:22:118"],"nodeType":"IdentifierPath","referencedDeclaration":67106,"src":"3463:22:118"},"nodeType":"ModifierInvocation","src":"3463:22:118"}],"name":"claimValue","nameLocation":"3423:10:118","parameters":{"id":67222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67221,"mutability":"mutable","name":"_claimedId","nameLocation":"3442:10:118","nodeType":"VariableDeclaration","scope":67233,"src":"3434:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67220,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3434:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3433:20:118"},"returnParameters":{"id":67225,"nodeType":"ParameterList","parameters":[],"src":"3486:0:118"},"scope":67749,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67248,"nodeType":"FunctionDefinition","src":"3559:154:118","nodes":[],"body":{"id":67247,"nodeType":"Block","src":"3652:61:118","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":67244,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67235,"src":"3699:6:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67243,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65075,"src":"3667:31:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":67245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3667:39:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67246,"nodeType":"EmitStatement","src":"3662:44:118"}]},"baseFunctions":[65157],"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[{"id":67238,"kind":"modifierInvocation","modifierName":{"id":67237,"name":"whileActive","nameLocations":["3616:11:118"],"nodeType":"IdentifierPath","referencedDeclaration":67138,"src":"3616:11:118"},"nodeType":"ModifierInvocation","src":"3616:11:118"},{"arguments":[{"id":67240,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67235,"src":"3644:6:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":67241,"kind":"modifierInvocation","modifierName":{"id":67239,"name":"retrievingValue","nameLocations":["3628:15:118"],"nodeType":"IdentifierPath","referencedDeclaration":67079,"src":"3628:15:118"},"nodeType":"ModifierInvocation","src":"3628:23:118"}],"name":"executableBalanceTopUp","nameLocation":"3568:22:118","parameters":{"id":67236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67235,"mutability":"mutable","name":"_value","nameLocation":"3599:6:118","nodeType":"VariableDeclaration","scope":67248,"src":"3591:14:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67234,"name":"uint128","nodeType":"ElementaryTypeName","src":"3591:7:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3590:16:118"},"returnParameters":{"id":67242,"nodeType":"ParameterList","parameters":[],"src":"3652:0:118"},"scope":67749,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67275,"nodeType":"FunctionDefinition","src":"3719:193:118","nodes":[],"body":{"id":67274,"nodeType":"Block","src":"3783:129:118","nodes":[],"statements":[{"assignments":[67254],"declarations":[{"constant":false,"id":67254,"mutability":"mutable","name":"balance","nameLocation":"3801:7:118","nodeType":"VariableDeclaration","scope":67274,"src":"3793:15:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67253,"name":"uint256","nodeType":"ElementaryTypeName","src":"3793:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":67265,"initialValue":{"arguments":[{"arguments":[{"id":67262,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3846:4:118","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67749","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67749","typeString":"contract Mirror"}],"id":67261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3838:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67260,"name":"address","nodeType":"ElementaryTypeName","src":"3838:7:118","typeDescriptions":{}}},"id":67263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3838:13:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":67256,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67153,"src":"3818:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:8:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67255,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67700,"src":"3811:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$65472_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":67258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3811:16:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65472","typeString":"contract IWrappedVara"}},"id":67259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3828:9:118","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":43770,"src":"3811:26:118","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":67264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3811:41:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3793:59:118"},{"expression":{"arguments":[{"id":67267,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67024,"src":"3877:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":67270,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67254,"src":"3896:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":67269,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3888:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":67268,"name":"uint128","nodeType":"ElementaryTypeName","src":"3888:7:118","typeDescriptions":{}}},"id":67271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3888:16:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67266,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67748,"src":"3862:14:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":67272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3862:43:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67273,"nodeType":"ExpressionStatement","src":"3862:43:118"}]},"baseFunctions":[65160],"functionSelector":"e43f3433","implemented":true,"kind":"function","modifiers":[{"id":67251,"kind":"modifierInvocation","modifierName":{"id":67250,"name":"whenTerminated","nameLocations":["3768:14:118"],"nodeType":"IdentifierPath","referencedDeclaration":67094,"src":"3768:14:118"},"nodeType":"ModifierInvocation","src":"3768:14:118"}],"name":"transferLockedValueToInheritor","nameLocation":"3728:30:118","parameters":{"id":67249,"nodeType":"ParameterList","parameters":[],"src":"3758:2:118"},"returnParameters":{"id":67252,"nodeType":"ParameterList","parameters":[],"src":"3783:0:118"},"scope":67749,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67313,"nodeType":"FunctionDefinition","src":"3970:310:118","nodes":[],"body":{"id":67312,"nodeType":"Block","src":"4048:232:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67285,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67027,"src":"4066:11:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":67288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4089:1:118","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":67287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4081:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67286,"name":"address","nodeType":"ElementaryTypeName","src":"4081:7:118","typeDescriptions":{}}},"id":67289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4081:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4066:25:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e6365","id":67291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4093:36:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""},"value":"initializer could only be set once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""}],"id":67284,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4058:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4058:72:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67293,"nodeType":"ExpressionStatement","src":"4058:72:118"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67295,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67022,"src":"4148:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":67298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4167:1:118","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":67297,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4159:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67296,"name":"address","nodeType":"ElementaryTypeName","src":"4159:7:118","typeDescriptions":{}}},"id":67299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4159:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4148:21:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e6365","id":67301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4171:36:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""},"value":"initializer could only be set once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""}],"id":67294,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4140:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4140:68:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67303,"nodeType":"ExpressionStatement","src":"4140:68:118"},{"expression":{"id":67306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67304,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67027,"src":"4219:11:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67305,"name":"_initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67277,"src":"4233:12:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4219:26:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67307,"nodeType":"ExpressionStatement","src":"4219:26:118"},{"expression":{"id":67310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67308,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67022,"src":"4255:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67309,"name":"_decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67279,"src":"4265:8:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4255:18:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67311,"nodeType":"ExpressionStatement","src":"4255:18:118"}]},"baseFunctions":[65167],"functionSelector":"485cc955","implemented":true,"kind":"function","modifiers":[{"id":67282,"kind":"modifierInvocation","modifierName":{"id":67281,"name":"onlyRouter","nameLocations":["4037:10:118"],"nodeType":"IdentifierPath","referencedDeclaration":67045,"src":"4037:10:118"},"nodeType":"ModifierInvocation","src":"4037:10:118"}],"name":"initialize","nameLocation":"3979:10:118","parameters":{"id":67280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67277,"mutability":"mutable","name":"_initializer","nameLocation":"3998:12:118","nodeType":"VariableDeclaration","scope":67313,"src":"3990:20:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67276,"name":"address","nodeType":"ElementaryTypeName","src":"3990:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67279,"mutability":"mutable","name":"_decoder","nameLocation":"4020:8:118","nodeType":"VariableDeclaration","scope":67313,"src":"4012:16:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67278,"name":"address","nodeType":"ElementaryTypeName","src":"4012:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3989:40:118"},"returnParameters":{"id":67283,"nodeType":"ParameterList","parameters":[],"src":"4048:0:118"},"scope":67749,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67391,"nodeType":"FunctionDefinition","src":"4363:1187:118","nodes":[],"body":{"id":67390,"nodeType":"Block","src":"4476:1074:118","nodes":[],"statements":[{"documentation":"@dev Verify that the transition belongs to this contract.","expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67324,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67316,"src":"4564:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4576:7:118","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69351,"src":"4564:19:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":67328,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4595:4:118","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67749","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67749","typeString":"contract Mirror"}],"id":67327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4587:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67326,"name":"address","nodeType":"ElementaryTypeName","src":"4587:7:118","typeDescriptions":{}}},"id":67329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4587:13:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4564:36:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6163746f724964206d757374206265207468697320636f6e7472616374","id":67331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4602:31:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_ba7be785920a68bd302e7ea09bd7071e8b885ef81058f7ff907b22051b8150cd","typeString":"literal_string \"actorId must be this contract\""},"value":"actorId must be this contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ba7be785920a68bd302e7ea09bd7071e8b885ef81058f7ff907b22051b8150cd","typeString":"literal_string \"actorId must be this contract\""}],"id":67323,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4556:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4556:78:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67333,"nodeType":"ExpressionStatement","src":"4556:78:118"},{"assignments":[67336],"declarations":[{"constant":false,"id":67336,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"4698:18:118","nodeType":"VariableDeclaration","scope":67390,"src":"4690:26:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67335,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4690:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":"@dev Send all outgoing messages.","id":67341,"initialValue":{"arguments":[{"expression":{"id":67338,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67316,"src":"4733:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4745:8:118","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":69366,"src":"4733:20:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69330_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Message_$69330_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}],"id":67337,"name":"_sendMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67458,"src":"4719:13:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Message_$69330_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message calldata[] calldata) returns (bytes32)"}},"id":67340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4719:35:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4690:64:118"},{"assignments":[67344],"declarations":[{"constant":false,"id":67344,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"4817:15:118","nodeType":"VariableDeclaration","scope":67390,"src":"4809:23:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67343,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4809:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":"@dev Send value for each claim.","id":67349,"initialValue":{"arguments":[{"expression":{"id":67346,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67316,"src":"4848:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4860:11:118","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":69362,"src":"4848:23:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69384_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69384_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}],"id":67345,"name":"_claimValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67650,"src":"4835:12:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_ValueClaim_$69384_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValueClaim calldata[] calldata) returns (bytes32)"}},"id":67348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4835:37:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4809:63:118"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":67350,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67316,"src":"4932:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4944:9:118","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":69356,"src":"4932:21:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":67352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4954:6:118","memberName":"length","nodeType":"MemberAccess","src":"4932:28:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":67353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4964:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4932:33:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":"@dev Set inheritor if specified.","id":67364,"nodeType":"IfStatement","src":"4928:126:118","trueBody":{"id":67363,"nodeType":"Block","src":"4967:87:118","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":67358,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67316,"src":"5020:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5032:9:118","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":69356,"src":"5020:21:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":67356,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"4995:4:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":67357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5000:19:118","memberName":"decodePackedAddress","nodeType":"MemberAccess","referencedDeclaration":69496,"src":"4995:24:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes memory) pure returns (address)"}},"id":67360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4995:47:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67355,"name":"_setInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67665,"src":"4981:13:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":67361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4981:62:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67362,"nodeType":"ExpressionStatement","src":"4981:62:118"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":67368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67365,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67029,"src":"5119:9:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":67366,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67316,"src":"5132:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5144:12:118","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":69353,"src":"5132:24:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5119:37:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":"@dev Update the state hash if changed.","id":67375,"nodeType":"IfStatement","src":"5115:110:118","trueBody":{"id":67374,"nodeType":"Block","src":"5158:67:118","statements":[{"expression":{"arguments":[{"expression":{"id":67370,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67316,"src":"5189:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5201:12:118","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":69353,"src":"5189:24:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":67369,"name":"_updateStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67679,"src":"5172:16:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":67372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5172:42:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67373,"nodeType":"ExpressionStatement","src":"5172:42:118"}]}},{"documentation":"@dev Return hash of performed state transition.","expression":{"arguments":[{"expression":{"id":67378,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67316,"src":"5340:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5352:7:118","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69351,"src":"5340:19:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67380,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67316,"src":"5373:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5385:12:118","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":69353,"src":"5373:24:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67382,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67316,"src":"5411:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5423:9:118","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":69356,"src":"5411:21:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67384,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67316,"src":"5446:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5458:14:118","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":69358,"src":"5446:26:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":67386,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67344,"src":"5486:15:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":67387,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67336,"src":"5515:18:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":67376,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"5302:4:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":67377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5307:19:118","memberName":"stateTransitionHash","nodeType":"MemberAccess","referencedDeclaration":69591,"src":"5302:24:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32,bytes memory,uint128,bytes32,bytes32) pure returns (bytes32)"}},"id":67388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5302:241:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":67322,"id":67389,"nodeType":"Return","src":"5295:248:118"}]},"baseFunctions":[65175],"functionSelector":"a02637b2","implemented":true,"kind":"function","modifiers":[{"id":67319,"kind":"modifierInvocation","modifierName":{"id":67318,"name":"onlyRouter","nameLocations":["4447:10:118"],"nodeType":"IdentifierPath","referencedDeclaration":67045,"src":"4447:10:118"},"nodeType":"ModifierInvocation","src":"4447:10:118"}],"name":"performStateTransition","nameLocation":"4372:22:118","parameters":{"id":67317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67316,"mutability":"mutable","name":"_transition","nameLocation":"4425:11:118","nodeType":"VariableDeclaration","scope":67391,"src":"4395:41:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":67315,"nodeType":"UserDefinedTypeName","pathNode":{"id":67314,"name":"Gear.StateTransition","nameLocations":["4395:4:118","4400:15:118"],"nodeType":"IdentifierPath","referencedDeclaration":69367,"src":"4395:20:118"},"referencedDeclaration":69367,"src":"4395:20:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"src":"4394:43:118"},"returnParameters":{"id":67322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67321,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67391,"src":"4467:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67320,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4467:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4466:9:118"},"scope":67749,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67458,"nodeType":"FunctionDefinition","src":"5758:627:118","nodes":[],"body":{"id":67457,"nodeType":"Block","src":"5842:543:118","nodes":[],"statements":[{"assignments":[67401],"declarations":[{"constant":false,"id":67401,"mutability":"mutable","name":"messagesHashes","nameLocation":"5865:14:118","nodeType":"VariableDeclaration","scope":67457,"src":"5852:27:118","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67400,"name":"bytes","nodeType":"ElementaryTypeName","src":"5852:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67402,"nodeType":"VariableDeclarationStatement","src":"5852:27:118"},{"body":{"id":67451,"nodeType":"Block","src":"5937:399:118","statements":[{"assignments":[67418],"declarations":[{"constant":false,"id":67418,"mutability":"mutable","name":"message","nameLocation":"5973:7:118","nodeType":"VariableDeclaration","scope":67451,"src":"5951:29:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":67417,"nodeType":"UserDefinedTypeName","pathNode":{"id":67416,"name":"Gear.Message","nameLocations":["5951:4:118","5956:7:118"],"nodeType":"IdentifierPath","referencedDeclaration":69330,"src":"5951:12:118"},"referencedDeclaration":69330,"src":"5951:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"id":67422,"initialValue":{"baseExpression":{"id":67419,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67395,"src":"5983:9:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69330_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":67421,"indexExpression":{"id":67420,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67404,"src":"5993:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5983:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"nodeType":"VariableDeclarationStatement","src":"5951:44:118"},{"expression":{"id":67433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67423,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67401,"src":"6010:14:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":67427,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67401,"src":"6040:14:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":67430,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67418,"src":"6073:7:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}],"expression":{"id":67428,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"6056:4:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":67429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6061:11:118","memberName":"messageHash","nodeType":"MemberAccess","referencedDeclaration":69537,"src":"6056:16:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$69330_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message memory) pure returns (bytes32)"}},"id":67431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6056:25:118","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":67425,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6027:5:118","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":67424,"name":"bytes","nodeType":"ElementaryTypeName","src":"6027:5:118","typeDescriptions":{}}},"id":67426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6033:6:118","memberName":"concat","nodeType":"MemberAccess","src":"6027:12:118","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":67432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6027:55:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"6010:72:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":67434,"nodeType":"ExpressionStatement","src":"6010:72:118"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":67439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":67435,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67418,"src":"6168:7:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6176:12:118","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69329,"src":"6168:20:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69349_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6189:2:118","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":69346,"src":"6168:23:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":67438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6195:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6168:28:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":67449,"nodeType":"Block","src":"6267:59:118","statements":[{"expression":{"arguments":[{"id":67446,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67418,"src":"6303:7:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":67445,"name":"_sendReplyMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67585,"src":"6285:17:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$69330_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":67447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6285:26:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67448,"nodeType":"ExpressionStatement","src":"6285:26:118"}]},"id":67450,"nodeType":"IfStatement","src":"6164:162:118","trueBody":{"id":67444,"nodeType":"Block","src":"6198:63:118","statements":[{"expression":{"arguments":[{"id":67441,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67418,"src":"6238:7:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":67440,"name":"_sendMailboxedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67515,"src":"6216:21:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$69330_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":67442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6216:30:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67443,"nodeType":"ExpressionStatement","src":"6216:30:118"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67407,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67404,"src":"5910:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":67408,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67395,"src":"5914:9:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69330_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":67409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5924:6:118","memberName":"length","nodeType":"MemberAccess","src":"5914:16:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5910:20:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67452,"initializationExpression":{"assignments":[67404],"declarations":[{"constant":false,"id":67404,"mutability":"mutable","name":"i","nameLocation":"5903:1:118","nodeType":"VariableDeclaration","scope":67452,"src":"5895:9:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67403,"name":"uint256","nodeType":"ElementaryTypeName","src":"5895:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":67406,"initialValue":{"hexValue":"30","id":67405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5907:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5895:13:118"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":67412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5932:3:118","subExpression":{"id":67411,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67404,"src":"5932:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":67413,"nodeType":"ExpressionStatement","src":"5932:3:118"},"nodeType":"ForStatement","src":"5890:446:118"},{"expression":{"arguments":[{"id":67454,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67401,"src":"6363:14:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":67453,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"6353:9:118","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":67455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6353:25:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":67399,"id":67456,"nodeType":"Return","src":"6346:32:118"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMessages","nameLocation":"5767:13:118","parameters":{"id":67396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67395,"mutability":"mutable","name":"_messages","nameLocation":"5805:9:118","nodeType":"VariableDeclaration","scope":67458,"src":"5781:33:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69330_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message[]"},"typeName":{"baseType":{"id":67393,"nodeType":"UserDefinedTypeName","pathNode":{"id":67392,"name":"Gear.Message","nameLocations":["5781:4:118","5786:7:118"],"nodeType":"IdentifierPath","referencedDeclaration":69330,"src":"5781:12:118"},"referencedDeclaration":69330,"src":"5781:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_storage_ptr","typeString":"struct Gear.Message"}},"id":67394,"nodeType":"ArrayTypeName","src":"5781:14:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69330_storage_$dyn_storage_ptr","typeString":"struct Gear.Message[]"}},"visibility":"internal"}],"src":"5780:35:118"},"returnParameters":{"id":67399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67398,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67458,"src":"5833:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67397,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5833:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5832:9:118"},"scope":67749,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67515,"nodeType":"FunctionDefinition","src":"6444:653:118","nodes":[],"body":{"id":67514,"nodeType":"Block","src":"6515:582:118","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67465,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67022,"src":"6529:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":67468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6548:1:118","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":67467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6540:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67466,"name":"address","nodeType":"ElementaryTypeName","src":"6540:7:118","typeDescriptions":{}}},"id":67469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6540:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6529:21:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67502,"nodeType":"IfStatement","src":"6525:474:118","trueBody":{"id":67501,"nodeType":"Block","src":"6552:447:118","statements":[{"assignments":[67472],"declarations":[{"constant":false,"id":67472,"mutability":"mutable","name":"callData","nameLocation":"6579:8:118","nodeType":"VariableDeclaration","scope":67501,"src":"6566:21:118","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67471,"name":"bytes","nodeType":"ElementaryTypeName","src":"6566:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67487,"initialValue":{"arguments":[{"expression":{"expression":{"id":67475,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65211,"src":"6630:14:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$65211_$","typeString":"type(contract IMirrorDecoder)"}},"id":67476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6645:13:118","memberName":"onMessageSent","nodeType":"MemberAccess","referencedDeclaration":65197,"src":"6630:28:118","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":67477,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6659:8:118","memberName":"selector","nodeType":"MemberAccess","src":"6630:37:118","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":67478,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67462,"src":"6685:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6694:2:118","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69320,"src":"6685:11:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67480,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67462,"src":"6714:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6723:11:118","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69322,"src":"6714:20:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67482,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67462,"src":"6752:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6761:7:118","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69324,"src":"6752:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67484,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67462,"src":"6786:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6795:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69326,"src":"6786:14:118","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":67473,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6590:3:118","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":67474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6594:18:118","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"6590:22:118","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":67486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6590:224:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6566:248:118"},{"assignments":[67489,null],"declarations":[{"constant":false,"id":67489,"mutability":"mutable","name":"success","nameLocation":"6874:7:118","nodeType":"VariableDeclaration","scope":67501,"src":"6869:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67488,"name":"bool","nodeType":"ElementaryTypeName","src":"6869:4:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":67496,"initialValue":{"arguments":[{"id":67494,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67472,"src":"6913:8:118","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":67490,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67022,"src":"6886:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6894:4:118","memberName":"call","nodeType":"MemberAccess","src":"6886:12:118","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":67493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":67492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6904:7:118","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"6886:26:118","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":67495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6886:36:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6868:54:118"},{"condition":{"id":67497,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67489,"src":"6941:7:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67500,"nodeType":"IfStatement","src":"6937:52:118","trueBody":{"id":67499,"nodeType":"Block","src":"6950:39:118","statements":[{"functionReturnParameters":67464,"id":67498,"nodeType":"Return","src":"6968:7:118"}]}}]}},{"eventCall":{"arguments":[{"expression":{"id":67504,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67462,"src":"7022:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7031:2:118","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69320,"src":"7022:11:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67506,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67462,"src":"7035:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7044:11:118","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69322,"src":"7035:20:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67508,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67462,"src":"7057:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7066:7:118","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69324,"src":"7057:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67510,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67462,"src":"7075:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7084:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69326,"src":"7075:14:118","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":67503,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65086,"src":"7014:7:118","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":67512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7014:76:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67513,"nodeType":"EmitStatement","src":"7009:81:118"}]},"documentation":{"id":67459,"nodeType":"StructuredDocumentation","src":"6391:48:118","text":"@dev Value never sent since goes to mailbox."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMailboxedMessage","nameLocation":"6453:21:118","parameters":{"id":67463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67462,"mutability":"mutable","name":"_message","nameLocation":"6497:8:118","nodeType":"VariableDeclaration","scope":67515,"src":"6475:30:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":67461,"nodeType":"UserDefinedTypeName","pathNode":{"id":67460,"name":"Gear.Message","nameLocations":["6475:4:118","6480:7:118"],"nodeType":"IdentifierPath","referencedDeclaration":69330,"src":"6475:12:118"},"referencedDeclaration":69330,"src":"6475:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"6474:32:118"},"returnParameters":{"id":67464,"nodeType":"ParameterList","parameters":[],"src":"6515:0:118"},"scope":67749,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67585,"nodeType":"FunctionDefinition","src":"7172:784:118","nodes":[],"body":{"id":67584,"nodeType":"Block","src":"7239:717:118","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":67523,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67519,"src":"7264:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7273:11:118","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69322,"src":"7264:20:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67525,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67519,"src":"7286:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7295:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69326,"src":"7286:14:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67522,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67748,"src":"7249:14:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":67527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7249:52:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67528,"nodeType":"ExpressionStatement","src":"7249:52:118"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67529,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67022,"src":"7316:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":67532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7335:1:118","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":67531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7327:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67530,"name":"address","nodeType":"ElementaryTypeName","src":"7327:7:118","typeDescriptions":{}}},"id":67533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7327:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7316:21:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67570,"nodeType":"IfStatement","src":"7312:529:118","trueBody":{"id":67569,"nodeType":"Block","src":"7339:502:118","statements":[{"assignments":[67536],"declarations":[{"constant":false,"id":67536,"mutability":"mutable","name":"callData","nameLocation":"7366:8:118","nodeType":"VariableDeclaration","scope":67569,"src":"7353:21:118","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67535,"name":"bytes","nodeType":"ElementaryTypeName","src":"7353:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67555,"initialValue":{"arguments":[{"expression":{"expression":{"id":67539,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65211,"src":"7417:14:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$65211_$","typeString":"type(contract IMirrorDecoder)"}},"id":67540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7432:11:118","memberName":"onReplySent","nodeType":"MemberAccess","referencedDeclaration":65210,"src":"7417:26:118","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":67541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7444:8:118","memberName":"selector","nodeType":"MemberAccess","src":"7417:35:118","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":67542,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67519,"src":"7470:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7479:11:118","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69322,"src":"7470:20:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67544,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67519,"src":"7508:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7517:7:118","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69324,"src":"7508:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67546,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67519,"src":"7542:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7551:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69326,"src":"7542:14:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":67548,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67519,"src":"7574:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7583:12:118","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69329,"src":"7574:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69349_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7596:2:118","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":69346,"src":"7574:24:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":67551,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67519,"src":"7616:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7625:12:118","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69329,"src":"7616:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69349_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7638:4:118","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":69348,"src":"7616:26:118","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":67537,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7377:3:118","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":67538,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7381:18:118","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"7377:22:118","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":67554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7377:279:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7353:303:118"},{"assignments":[67557,null],"declarations":[{"constant":false,"id":67557,"mutability":"mutable","name":"success","nameLocation":"7716:7:118","nodeType":"VariableDeclaration","scope":67569,"src":"7711:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67556,"name":"bool","nodeType":"ElementaryTypeName","src":"7711:4:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":67564,"initialValue":{"arguments":[{"id":67562,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67536,"src":"7755:8:118","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":67558,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67022,"src":"7728:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7736:4:118","memberName":"call","nodeType":"MemberAccess","src":"7728:12:118","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":67561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":67560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7746:7:118","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"7728:26:118","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":67563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7728:36:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7710:54:118"},{"condition":{"id":67565,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67557,"src":"7783:7:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67568,"nodeType":"IfStatement","src":"7779:52:118","trueBody":{"id":67567,"nodeType":"Block","src":"7792:39:118","statements":[{"functionReturnParameters":67521,"id":67566,"nodeType":"Return","src":"7810:7:118"}]}}]}},{"eventCall":{"arguments":[{"expression":{"id":67572,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67519,"src":"7862:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7871:7:118","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69324,"src":"7862:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67574,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67519,"src":"7880:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7889:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69326,"src":"7880:14:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":67576,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67519,"src":"7896:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7905:12:118","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69329,"src":"7896:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69349_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7918:2:118","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":69346,"src":"7896:24:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":67579,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67519,"src":"7922:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7931:12:118","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69329,"src":"7922:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69349_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7944:4:118","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":69348,"src":"7922:26:118","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":67571,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65097,"src":"7856:5:118","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":67582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7856:93:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67583,"nodeType":"EmitStatement","src":"7851:98:118"}]},"documentation":{"id":67516,"nodeType":"StructuredDocumentation","src":"7103:64:118","text":"@dev Non-zero value always sent since never goes to mailbox."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendReplyMessage","nameLocation":"7181:17:118","parameters":{"id":67520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67519,"mutability":"mutable","name":"_message","nameLocation":"7221:8:118","nodeType":"VariableDeclaration","scope":67585,"src":"7199:30:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":67518,"nodeType":"UserDefinedTypeName","pathNode":{"id":67517,"name":"Gear.Message","nameLocations":["7199:4:118","7204:7:118"],"nodeType":"IdentifierPath","referencedDeclaration":69330,"src":"7199:12:118"},"referencedDeclaration":69330,"src":"7199:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69330_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"7198:32:118"},"returnParameters":{"id":67521,"nodeType":"ParameterList","parameters":[],"src":"7239:0:118"},"scope":67749,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67650,"nodeType":"FunctionDefinition","src":"7962:514:118","nodes":[],"body":{"id":67649,"nodeType":"Block","src":"8046:430:118","nodes":[],"statements":[{"assignments":[67595],"declarations":[{"constant":false,"id":67595,"mutability":"mutable","name":"valueClaimsBytes","nameLocation":"8069:16:118","nodeType":"VariableDeclaration","scope":67649,"src":"8056:29:118","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67594,"name":"bytes","nodeType":"ElementaryTypeName","src":"8056:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67596,"nodeType":"VariableDeclarationStatement","src":"8056:29:118"},{"body":{"id":67643,"nodeType":"Block","src":"8141:284:118","statements":[{"assignments":[67612],"declarations":[{"constant":false,"id":67612,"mutability":"mutable","name":"claim","nameLocation":"8180:5:118","nodeType":"VariableDeclaration","scope":67643,"src":"8155:30:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69384_calldata_ptr","typeString":"struct Gear.ValueClaim"},"typeName":{"id":67611,"nodeType":"UserDefinedTypeName","pathNode":{"id":67610,"name":"Gear.ValueClaim","nameLocations":["8155:4:118","8160:10:118"],"nodeType":"IdentifierPath","referencedDeclaration":69384,"src":"8155:15:118"},"referencedDeclaration":69384,"src":"8155:15:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69384_storage_ptr","typeString":"struct Gear.ValueClaim"}},"visibility":"internal"}],"id":67616,"initialValue":{"baseExpression":{"id":67613,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67589,"src":"8188:7:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69384_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":67615,"indexExpression":{"id":67614,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67598,"src":"8196:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8188:10:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69384_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"nodeType":"VariableDeclarationStatement","src":"8155:43:118"},{"expression":{"id":67627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67617,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67595,"src":"8213:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":67621,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67595,"src":"8245:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":67624,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67612,"src":"8284:5:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69384_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValueClaim_$69384_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}],"expression":{"id":67622,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"8263:4:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":67623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8268:15:118","memberName":"valueClaimBytes","nodeType":"MemberAccess","referencedDeclaration":69715,"src":"8263:20:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ValueClaim_$69384_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct Gear.ValueClaim memory) pure returns (bytes memory)"}},"id":67625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8263:27:118","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":67619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8232:5:118","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":67618,"name":"bytes","nodeType":"ElementaryTypeName","src":"8232:5:118","typeDescriptions":{}}},"id":67620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8238:6:118","memberName":"concat","nodeType":"MemberAccess","src":"8232:12:118","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":67626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8232:59:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8213:78:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":67628,"nodeType":"ExpressionStatement","src":"8213:78:118"},{"expression":{"arguments":[{"expression":{"id":67630,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67612,"src":"8321:5:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69384_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8327:11:118","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69381,"src":"8321:17:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67632,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67612,"src":"8340:5:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69384_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8346:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69383,"src":"8340:11:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67629,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67748,"src":"8306:14:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":67634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8306:46:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67635,"nodeType":"ExpressionStatement","src":"8306:46:118"},{"eventCall":{"arguments":[{"expression":{"id":67637,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67612,"src":"8385:5:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69384_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8391:9:118","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":69379,"src":"8385:15:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67639,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67612,"src":"8402:5:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69384_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8408:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69383,"src":"8402:11:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67636,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65104,"src":"8372:12:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":67641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8372:42:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67642,"nodeType":"EmitStatement","src":"8367:47:118"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67601,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67598,"src":"8116:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":67602,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67589,"src":"8120:7:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69384_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":67603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8128:6:118","memberName":"length","nodeType":"MemberAccess","src":"8120:14:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8116:18:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67644,"initializationExpression":{"assignments":[67598],"declarations":[{"constant":false,"id":67598,"mutability":"mutable","name":"i","nameLocation":"8109:1:118","nodeType":"VariableDeclaration","scope":67644,"src":"8101:9:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67597,"name":"uint256","nodeType":"ElementaryTypeName","src":"8101:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":67600,"initialValue":{"hexValue":"30","id":67599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8113:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8101:13:118"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":67606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8136:3:118","subExpression":{"id":67605,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67598,"src":"8136:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":67607,"nodeType":"ExpressionStatement","src":"8136:3:118"},"nodeType":"ForStatement","src":"8096:329:118"},{"expression":{"arguments":[{"id":67646,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67595,"src":"8452:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":67645,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8442:9:118","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":67647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8442:27:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":67593,"id":67648,"nodeType":"Return","src":"8435:34:118"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_claimValues","nameLocation":"7971:12:118","parameters":{"id":67590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67589,"mutability":"mutable","name":"_claims","nameLocation":"8011:7:118","nodeType":"VariableDeclaration","scope":67650,"src":"7984:34:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69384_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim[]"},"typeName":{"baseType":{"id":67587,"nodeType":"UserDefinedTypeName","pathNode":{"id":67586,"name":"Gear.ValueClaim","nameLocations":["7984:4:118","7989:10:118"],"nodeType":"IdentifierPath","referencedDeclaration":69384,"src":"7984:15:118"},"referencedDeclaration":69384,"src":"7984:15:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69384_storage_ptr","typeString":"struct Gear.ValueClaim"}},"id":67588,"nodeType":"ArrayTypeName","src":"7984:17:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69384_storage_$dyn_storage_ptr","typeString":"struct Gear.ValueClaim[]"}},"visibility":"internal"}],"src":"7983:36:118"},"returnParameters":{"id":67593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67650,"src":"8037:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67591,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8037:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8036:9:118"},"scope":67749,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67665,"nodeType":"FunctionDefinition","src":"8482:243:118","nodes":[],"body":{"id":67664,"nodeType":"Block","src":"8545:180:118","nodes":[],"statements":[{"documentation":"@dev Set inheritor.","expression":{"id":67659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67657,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67024,"src":"8587:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67658,"name":"_inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67652,"src":"8599:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8587:22:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67660,"nodeType":"ExpressionStatement","src":"8587:22:118"},{"documentation":"@dev Transfer all available balance to the inheritor.","expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67661,"name":"transferLockedValueToInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67275,"src":"8686:30:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8686:32:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67663,"nodeType":"ExpressionStatement","src":"8686:32:118"}]},"implemented":true,"kind":"function","modifiers":[{"id":67655,"kind":"modifierInvocation","modifierName":{"id":67654,"name":"whileActive","nameLocations":["8533:11:118"],"nodeType":"IdentifierPath","referencedDeclaration":67138,"src":"8533:11:118"},"nodeType":"ModifierInvocation","src":"8533:11:118"}],"name":"_setInheritor","nameLocation":"8491:13:118","parameters":{"id":67653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67652,"mutability":"mutable","name":"_inheritor","nameLocation":"8513:10:118","nodeType":"VariableDeclaration","scope":67665,"src":"8505:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67651,"name":"address","nodeType":"ElementaryTypeName","src":"8505:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8504:20:118"},"returnParameters":{"id":67656,"nodeType":"ParameterList","parameters":[],"src":"8545:0:118"},"scope":67749,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67679,"nodeType":"FunctionDefinition","src":"8731:235:118","nodes":[],"body":{"id":67678,"nodeType":"Block","src":"8785:181:118","nodes":[],"statements":[{"documentation":"@dev Set state hash.","expression":{"id":67672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67670,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67029,"src":"8828:9:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67671,"name":"_stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67667,"src":"8840:10:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8828:22:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":67673,"nodeType":"ExpressionStatement","src":"8828:22:118"},{"documentation":"@dev Emits an event signaling that the state has changed.","eventCall":{"arguments":[{"id":67675,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67029,"src":"8949:9:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":67674,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65041,"src":"8936:12:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":67676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8936:23:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67677,"nodeType":"EmitStatement","src":"8931:28:118"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_updateStateHash","nameLocation":"8740:16:118","parameters":{"id":67668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67667,"mutability":"mutable","name":"_stateHash","nameLocation":"8765:10:118","nodeType":"VariableDeclaration","scope":67679,"src":"8757:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67666,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8757:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8756:20:118"},"returnParameters":{"id":67669,"nodeType":"ParameterList","parameters":[],"src":"8785:0:118"},"scope":67749,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67700,"nodeType":"FunctionDefinition","src":"9006:182:118","nodes":[],"body":{"id":67699,"nodeType":"Block","src":"9078:110:118","nodes":[],"statements":[{"assignments":[67688],"declarations":[{"constant":false,"id":67688,"mutability":"mutable","name":"wvaraAddr","nameLocation":"9096:9:118","nodeType":"VariableDeclaration","scope":67699,"src":"9088:17:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67687,"name":"address","nodeType":"ElementaryTypeName","src":"9088:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":67694,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":67690,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67681,"src":"9116:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67689,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65461,"src":"9108:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$65461_$","typeString":"type(contract IRouter)"}},"id":67691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9108:19:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$65461","typeString":"contract IRouter"}},"id":67692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9128:11:118","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":65314,"src":"9108:31:118","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":67693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9108:33:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9088:53:118"},{"expression":{"arguments":[{"id":67696,"name":"wvaraAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67688,"src":"9171:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67695,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65472,"src":"9158:12:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$65472_$","typeString":"type(contract IWrappedVara)"}},"id":67697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9158:23:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65472","typeString":"contract IWrappedVara"}},"functionReturnParameters":67686,"id":67698,"nodeType":"Return","src":"9151:30:118"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_wvara","nameLocation":"9015:6:118","parameters":{"id":67682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67681,"mutability":"mutable","name":"routerAddr","nameLocation":"9030:10:118","nodeType":"VariableDeclaration","scope":67700,"src":"9022:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67680,"name":"address","nodeType":"ElementaryTypeName","src":"9022:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9021:20:118"},"returnParameters":{"id":67686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67685,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67700,"src":"9064:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65472","typeString":"contract IWrappedVara"},"typeName":{"id":67684,"nodeType":"UserDefinedTypeName","pathNode":{"id":67683,"name":"IWrappedVara","nameLocations":["9064:12:118"],"nodeType":"IdentifierPath","referencedDeclaration":65472,"src":"9064:12:118"},"referencedDeclaration":65472,"src":"9064:12:118","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65472","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"src":"9063:14:118"},"scope":67749,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":67719,"nodeType":"FunctionDefinition","src":"9194:182:118","nodes":[],"body":{"id":67718,"nodeType":"Block","src":"9244:132:118","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67705,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9258:3:118","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":67706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9262:6:118","memberName":"sender","nodeType":"MemberAccess","src":"9258:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":67707,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67022,"src":"9272:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9258:21:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":67716,"nodeType":"Block","src":"9328:42:118","statements":[{"expression":{"expression":{"id":67713,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9349:3:118","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":67714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9353:6:118","memberName":"sender","nodeType":"MemberAccess","src":"9349:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67704,"id":67715,"nodeType":"Return","src":"9342:17:118"}]},"id":67717,"nodeType":"IfStatement","src":"9254:116:118","trueBody":{"id":67712,"nodeType":"Block","src":"9281:41:118","statements":[{"expression":{"expression":{"id":67709,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"9302:2:118","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":67710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9305:6:118","memberName":"origin","nodeType":"MemberAccess","src":"9302:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67704,"id":67711,"nodeType":"Return","src":"9295:16:118"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_source","nameLocation":"9203:7:118","parameters":{"id":67701,"nodeType":"ParameterList","parameters":[],"src":"9210:2:118"},"returnParameters":{"id":67704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67703,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67719,"src":"9235:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67702,"name":"address","nodeType":"ElementaryTypeName","src":"9235:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9234:9:118"},"scope":67749,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":67748,"nodeType":"FunctionDefinition","src":"9382:243:118","nodes":[],"body":{"id":67747,"nodeType":"Block","src":"9450:175:118","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":67728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67726,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67723,"src":"9464:5:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":67727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9473:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9464:10:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67746,"nodeType":"IfStatement","src":"9460:159:118","trueBody":{"id":67745,"nodeType":"Block","src":"9476:143:118","statements":[{"assignments":[67730],"declarations":[{"constant":false,"id":67730,"mutability":"mutable","name":"success","nameLocation":"9495:7:118","nodeType":"VariableDeclaration","scope":67745,"src":"9490:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67729,"name":"bool","nodeType":"ElementaryTypeName","src":"9490:4:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":67739,"initialValue":{"arguments":[{"id":67736,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67721,"src":"9531:11:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67737,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67723,"src":"9544:5:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":67732,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67153,"src":"9512:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9512:8:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67731,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67700,"src":"9505:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$65472_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":67734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9505:16:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65472","typeString":"contract IWrappedVara"}},"id":67735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9522:8:118","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":43780,"src":"9505:25:118","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":67738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9505:45:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9490:60:118"},{"expression":{"arguments":[{"id":67741,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67730,"src":"9572:7:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207472616e73666572205756617261","id":67742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9581:26:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_67b810931d6bc27bebc6c54d267fd2daa6fef9e1939bb1712f8d92f0ff26a989","typeString":"literal_string \"failed to transfer WVara\""},"value":"failed to transfer WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67b810931d6bc27bebc6c54d267fd2daa6fef9e1939bb1712f8d92f0ff26a989","typeString":"literal_string \"failed to transfer WVara\""}],"id":67740,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9564:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9564:44:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67744,"nodeType":"ExpressionStatement","src":"9564:44:118"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_transferValue","nameLocation":"9391:14:118","parameters":{"id":67724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67721,"mutability":"mutable","name":"destination","nameLocation":"9414:11:118","nodeType":"VariableDeclaration","scope":67748,"src":"9406:19:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67720,"name":"address","nodeType":"ElementaryTypeName","src":"9406:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67723,"mutability":"mutable","name":"value","nameLocation":"9435:5:118","nodeType":"VariableDeclaration","scope":67748,"src":"9427:13:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67722,"name":"uint128","nodeType":"ElementaryTypeName","src":"9427:7:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9405:36:118"},"returnParameters":{"id":67725,"nodeType":"ParameterList","parameters":[],"src":"9450:0:118"},"scope":67749,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":67019,"name":"IMirror","nameLocations":["422:7:118"],"nodeType":"IdentifierPath","referencedDeclaration":65176,"src":"422:7:118"},"id":67020,"nodeType":"InheritanceSpecifier","src":"422:7:118"}],"canonicalName":"Mirror","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[67749,65176],"name":"Mirror","nameLocation":"412:6:118","scope":67750,"usedErrors":[],"usedEvents":[65041,65052,65063,65070,65075,65086,65097,65104]}],"license":"UNLICENSED"},"id":118} \ No newline at end of file diff --git a/ethexe/ethereum/MirrorProxy.json b/ethexe/ethereum/MirrorProxy.json index 9bdb4f9ace1..1d3e1aea45b 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":"0x60a034606b57601f61021038819003918201601f19168301916001600160401b03831184841017606f57808492602094604052833981010312606b57516001600160a01b0381168103606b5760805260405161018c908161008482396080518181816023015260e10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060405260043610156100c0575b63e6fabc0960e01b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea2646970667358221220ea5c82a68bb8d4a477a330cde29a5f8425f8a1655cb0255ebb98bfd0fb1a823564736f6c634300081c0033","sourceMap":"259:286:158:-:0;;;;;;;;;;;;;-1:-1:-1;;259:286:158;;;;-1:-1:-1;;;;;259:286:158;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:286:158;;;;;;386:16;;259:286;;;;;;;;386:16;259:286;;;;;;;;;;;;-1:-1:-1;259:286:158;;;;;;-1:-1:-1;259:286:158;;;;;-1:-1:-1;259:286:158","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610156100c0575b63e6fabc0960e01b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea2646970667358221220ea5c82a68bb8d4a477a330cde29a5f8425f8a1655cb0255ebb98bfd0fb1a823564736f6c634300081c0033","sourceMap":"259:286:158:-:0;;;;;;;;;-1:-1:-1;;;;259:286:158;508:28;;;;;259:286;;516:6;-1:-1:-1;;;;;259:286:158;508:28;;;;;;-1:-1:-1;508:28:158;;2381:17:47;508:28:158;;;;;;;;;259:286;;;;;;;;;;;;;;;;;;508:28;259:286;;;;508:28;;:::i;:::-;2381:17:47;:::i;259:286:158:-;;;;-1:-1:-1;259:286:158;;;;;-1:-1:-1;259:286:158;508:28;;;;;;259:286;;;-1:-1:-1;259:286:158;;;;;;;;;;;;;;;;;;;-1:-1:-1;;259:286:158;;;;309:31;-1:-1:-1;;;;;259:286:158;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:286:158;;;;;;;:::o;949:895:47:-;1019:819;949:895;;1019:819;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"immutableReferences":{"75345":[{"start":35,"length":32},{"start":225,"length":32}]}},"methodIdentifiers":{"router()":"f887ea40"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"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/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17\",\"dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi\"]},\"src/MirrorProxy.sol\":{\"keccak256\":\"0x5aa79edf0ac44b938c81e38e5a63e5ed53078a67870e910cecf1019766f40326\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://dc722a0b42b2ad97f63486a200bfaed40f33dad6d0ea1697fd0c2d6cc6280316\",\"dweb:/ipfs/Qmb66iPmELyjyzaBDMaNr3XVL5QHCcf9s9cvhQuTceDHsP\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec\",\"dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"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/","symbiotic-core/=lib/symbiotic-core/"],"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"},"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/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8","urls":["bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17","dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi"],"license":"UNLICENSED"},"src/MirrorProxy.sol":{"keccak256":"0x5aa79edf0ac44b938c81e38e5a63e5ed53078a67870e910cecf1019766f40326","urls":["bzz-raw://dc722a0b42b2ad97f63486a200bfaed40f33dad6d0ea1697fd0c2d6cc6280316","dweb:/ipfs/Qmb66iPmELyjyzaBDMaNr3XVL5QHCcf9s9cvhQuTceDHsP"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc","urls":["bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec","dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/MirrorProxy.sol","id":75370,"exportedSymbols":{"IMirrorProxy":[73602],"IRouter":[73844],"MirrorProxy":[75369],"Proxy":[42208]},"nodeType":"SourceUnit","src":"39:507:158","nodes":[{"id":75333,"nodeType":"PragmaDirective","src":"39:24:158","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":75335,"nodeType":"ImportDirective","src":"65:62:158","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","file":"@openzeppelin/contracts/proxy/Proxy.sol","nameLocation":"-1:-1:-1","scope":75370,"sourceUnit":42209,"symbolAliases":[{"foreign":{"id":75334,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42208,"src":"73:5:158","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75337,"nodeType":"ImportDirective","src":"128:48:158","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":75370,"sourceUnit":73603,"symbolAliases":[{"foreign":{"id":75336,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73602,"src":"136:12:158","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75339,"nodeType":"ImportDirective","src":"177:38:158","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":75370,"sourceUnit":73845,"symbolAliases":[{"foreign":{"id":75338,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73844,"src":"185:7:158","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75369,"nodeType":"ContractDefinition","src":"259:286:158","nodes":[{"id":75345,"nodeType":"VariableDeclaration","src":"309:31:158","nodes":[],"baseFunctions":[73601],"constant":false,"functionSelector":"f887ea40","mutability":"immutable","name":"router","nameLocation":"334:6:158","scope":75369,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75344,"name":"address","nodeType":"ElementaryTypeName","src":"309:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":75355,"nodeType":"FunctionDefinition","src":"347:62:158","nodes":[],"body":{"id":75354,"nodeType":"Block","src":"376:33:158","nodes":[],"statements":[{"expression":{"id":75352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75350,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75345,"src":"386:6:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75351,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75347,"src":"395:7:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"386:16:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75353,"nodeType":"ExpressionStatement","src":"386:16:158"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":75348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75347,"mutability":"mutable","name":"_router","nameLocation":"367:7:158","nodeType":"VariableDeclaration","scope":75355,"src":"359:15:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75346,"name":"address","nodeType":"ElementaryTypeName","src":"359:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"358:17:158"},"returnParameters":{"id":75349,"nodeType":"ParameterList","parameters":[],"src":"376:0:158"},"scope":75369,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75368,"nodeType":"FunctionDefinition","src":"415:128:158","nodes":[],"body":{"id":75367,"nodeType":"Block","src":"491:52:158","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":75362,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75345,"src":"516:6:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75361,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73844,"src":"508:7:158","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$73844_$","typeString":"type(contract IRouter)"}},"id":75363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:15:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$73844","typeString":"contract IRouter"}},"id":75364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"524:10:158","memberName":"mirrorImpl","nodeType":"MemberAccess","referencedDeclaration":73687,"src":"508:26:158","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":75365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:28:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75360,"id":75366,"nodeType":"Return","src":"501:35:158"}]},"baseFunctions":[42189],"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"424:15:158","overrides":{"id":75357,"nodeType":"OverrideSpecifier","overrides":[],"src":"464:8:158"},"parameters":{"id":75356,"nodeType":"ParameterList","parameters":[],"src":"439:2:158"},"returnParameters":{"id":75360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75359,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75368,"src":"482:7:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75358,"name":"address","nodeType":"ElementaryTypeName","src":"482:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"481:9:158"},"scope":75369,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":75340,"name":"IMirrorProxy","nameLocations":["283:12:158"],"nodeType":"IdentifierPath","referencedDeclaration":73602,"src":"283:12:158"},"id":75341,"nodeType":"InheritanceSpecifier","src":"283:12:158"},{"baseName":{"id":75342,"name":"Proxy","nameLocations":["297:5:158"],"nodeType":"IdentifierPath","referencedDeclaration":42208,"src":"297:5:158"},"id":75343,"nodeType":"InheritanceSpecifier","src":"297:5:158"}],"canonicalName":"MirrorProxy","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[75369,42208,73602],"name":"MirrorProxy","nameLocation":"268:11:158","scope":75370,"usedErrors":[],"usedEvents":[]}],"license":"UNLICENSED"},"id":158} \ 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":"0x60a034606b57601f61021038819003918201601f19168301916001600160401b03831184841017606f57808492602094604052833981010312606b57516001600160a01b0381168103606b5760805260405161018c908161008482396080518181816023015260e10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060405260043610156100c0575b63e6fabc0960e01b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea26469706673582212202de050cf114fcc50c8da091af4e29c15505e82a001d87cffc8d117c06215d6eb64736f6c634300081c0033","sourceMap":"259:286:119:-:0;;;;;;;;;;;;;-1:-1:-1;;259:286:119;;;;-1:-1:-1;;;;;259:286:119;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:286:119;;;;;;386:16;;259:286;;;;;;;;386:16;259:286;;;;;;;;;;;;-1:-1:-1;259:286:119;;;;;;-1:-1:-1;259:286:119;;;;;-1:-1:-1;259:286:119","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610156100c0575b63e6fabc0960e01b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea26469706673582212202de050cf114fcc50c8da091af4e29c15505e82a001d87cffc8d117c06215d6eb64736f6c634300081c0033","sourceMap":"259:286:119:-:0;;;;;;;;;-1:-1:-1;;;;259:286:119;508:28;;;;;259:286;;516:6;-1:-1:-1;;;;;259:286:119;508:28;;;;;;-1:-1:-1;508:28:119;;2381:17:40;508:28:119;;;;;;;;;259:286;;;;;;;;;;;;;;;;;;508:28;259:286;;;;508:28;;:::i;:::-;2381:17:40;:::i;259:286:119:-;;;;-1:-1:-1;259:286:119;;;;;-1:-1:-1;259:286:119;508:28;;;;;;259:286;;;-1:-1:-1;259:286:119;;;;;;;;;;;;;;;;;;;-1:-1:-1;;259:286:119;;;;309:31;-1:-1:-1;;;;;259:286:119;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:286:119;;;;;;;:::o;949:895:40:-;1019:819;949:895;;1019:819;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"immutableReferences":{"67763":[{"start":35,"length":32},{"start":225,"length":32}]}},"methodIdentifiers":{"router()":"f887ea40"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17\",\"dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi\"]},\"src/MirrorProxy.sol\":{\"keccak256\":\"0x5aa79edf0ac44b938c81e38e5a63e5ed53078a67870e910cecf1019766f40326\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://dc722a0b42b2ad97f63486a200bfaed40f33dad6d0ea1697fd0c2d6cc6280316\",\"dweb:/ipfs/Qmb66iPmELyjyzaBDMaNr3XVL5QHCcf9s9cvhQuTceDHsP\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0xad62fddfe4d63c9095ec7b382357012259e108fd565fb0dd28071d9905ce5367\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://51f471d58a8ec6631cefb597a7695ab91cca562e2a37c4e9fe09a291cf02c5be\",\"dweb:/ipfs/QmWrq9Gn1qgNG3kvFQoe5ZeyMWGgybaBCFGCcSZeRGwALH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"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/","symbiotic-core/=lib/symbiotic-core/"],"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"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8","urls":["bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17","dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi"],"license":"UNLICENSED"},"src/MirrorProxy.sol":{"keccak256":"0x5aa79edf0ac44b938c81e38e5a63e5ed53078a67870e910cecf1019766f40326","urls":["bzz-raw://dc722a0b42b2ad97f63486a200bfaed40f33dad6d0ea1697fd0c2d6cc6280316","dweb:/ipfs/Qmb66iPmELyjyzaBDMaNr3XVL5QHCcf9s9cvhQuTceDHsP"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xad62fddfe4d63c9095ec7b382357012259e108fd565fb0dd28071d9905ce5367","urls":["bzz-raw://51f471d58a8ec6631cefb597a7695ab91cca562e2a37c4e9fe09a291cf02c5be","dweb:/ipfs/QmWrq9Gn1qgNG3kvFQoe5ZeyMWGgybaBCFGCcSZeRGwALH"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/MirrorProxy.sol","id":67788,"exportedSymbols":{"IMirrorProxy":[65219],"IRouter":[65461],"MirrorProxy":[67787],"Proxy":[42880]},"nodeType":"SourceUnit","src":"39:507:119","nodes":[{"id":67751,"nodeType":"PragmaDirective","src":"39:24:119","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":67753,"nodeType":"ImportDirective","src":"65:62:119","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","file":"@openzeppelin/contracts/proxy/Proxy.sol","nameLocation":"-1:-1:-1","scope":67788,"sourceUnit":42881,"symbolAliases":[{"foreign":{"id":67752,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42880,"src":"73:5:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67755,"nodeType":"ImportDirective","src":"128:48:119","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":67788,"sourceUnit":65220,"symbolAliases":[{"foreign":{"id":67754,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65219,"src":"136:12:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67757,"nodeType":"ImportDirective","src":"177:38:119","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":67788,"sourceUnit":65462,"symbolAliases":[{"foreign":{"id":67756,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65461,"src":"185:7:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67787,"nodeType":"ContractDefinition","src":"259:286:119","nodes":[{"id":67763,"nodeType":"VariableDeclaration","src":"309:31:119","nodes":[],"baseFunctions":[65218],"constant":false,"functionSelector":"f887ea40","mutability":"immutable","name":"router","nameLocation":"334:6:119","scope":67787,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67762,"name":"address","nodeType":"ElementaryTypeName","src":"309:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67773,"nodeType":"FunctionDefinition","src":"347:62:119","nodes":[],"body":{"id":67772,"nodeType":"Block","src":"376:33:119","nodes":[],"statements":[{"expression":{"id":67770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67768,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67763,"src":"386:6:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67769,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67765,"src":"395:7:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"386:16:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67771,"nodeType":"ExpressionStatement","src":"386:16:119"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":67766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67765,"mutability":"mutable","name":"_router","nameLocation":"367:7:119","nodeType":"VariableDeclaration","scope":67773,"src":"359:15:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67764,"name":"address","nodeType":"ElementaryTypeName","src":"359:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"358:17:119"},"returnParameters":{"id":67767,"nodeType":"ParameterList","parameters":[],"src":"376:0:119"},"scope":67787,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67786,"nodeType":"FunctionDefinition","src":"415:128:119","nodes":[],"body":{"id":67785,"nodeType":"Block","src":"491:52:119","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":67780,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67763,"src":"516:6:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67779,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65461,"src":"508:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$65461_$","typeString":"type(contract IRouter)"}},"id":67781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:15:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$65461","typeString":"contract IRouter"}},"id":67782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"524:10:119","memberName":"mirrorImpl","nodeType":"MemberAccess","referencedDeclaration":65304,"src":"508:26:119","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":67783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:28:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67778,"id":67784,"nodeType":"Return","src":"501:35:119"}]},"baseFunctions":[42861],"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"424:15:119","overrides":{"id":67775,"nodeType":"OverrideSpecifier","overrides":[],"src":"464:8:119"},"parameters":{"id":67774,"nodeType":"ParameterList","parameters":[],"src":"439:2:119"},"returnParameters":{"id":67778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67777,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67786,"src":"482:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67776,"name":"address","nodeType":"ElementaryTypeName","src":"482:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"481:9:119"},"scope":67787,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":67758,"name":"IMirrorProxy","nameLocations":["283:12:119"],"nodeType":"IdentifierPath","referencedDeclaration":65219,"src":"283:12:119"},"id":67759,"nodeType":"InheritanceSpecifier","src":"283:12:119"},{"baseName":{"id":67760,"name":"Proxy","nameLocations":["297:5:119"],"nodeType":"IdentifierPath","referencedDeclaration":42880,"src":"297:5:119"},"id":67761,"nodeType":"InheritanceSpecifier","src":"297:5:119"}],"canonicalName":"MirrorProxy","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[67787,42880,65219],"name":"MirrorProxy","nameLocation":"268:11:119","scope":67788,"usedErrors":[],"usedEvents":[]}],"license":"UNLICENSED"},"id":119} \ No newline at end of file diff --git a/ethexe/ethereum/Router.json b/ethexe/ethereum/Router.json index 46174f15d89..d1ad331e4b2 100644 --- a/ethexe/ethereum/Router.json +++ b/ethexe/ethereum/Router.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"areValidators","inputs":[{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"codeState","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Gear.CodeState"}],"stateMutability":"view"},{"type":"function","name":"codesStates","inputs":[{"name":"_codesIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"uint8[]","internalType":"enum Gear.CodeState[]"}],"stateMutability":"view"},{"type":"function","name":"commitBlocks","inputs":[{"name":"_blockCommitments","type":"tuple[]","internalType":"struct Gear.BlockCommitment[]","components":[{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"previousCommittedBlock","type":"bytes32","internalType":"bytes32"},{"name":"predecessorBlock","type":"bytes32","internalType":"bytes32"},{"name":"transitions","type":"tuple[]","internalType":"struct Gear.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 Gear.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 Gear.Message[]","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 Gear.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":"_codeCommitments","type":"tuple[]","internalType":"struct Gear.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":"computeSettings","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.ComputationSettings","components":[{"name":"threshold","type":"uint64","internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","internalType":"uint128"}]}],"stateMutability":"view"},{"type":"function","name":"createProgram","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProgramWithDecoder","inputs":[{"name":"_decoderImpl","type":"address","internalType":"address"},{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"genesisBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_mirror","type":"address","internalType":"address"},{"name":"_mirrorProxy","type":"address","internalType":"address"},{"name":"_wrappedVara","type":"address","internalType":"address"},{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isValidator","inputs":[{"name":"_validator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestCommittedBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"lookupGenesisHash","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mirrorImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"mirrorProxyImpl","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":"_programId","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"programsCodeIds","inputs":[{"name":"_programsIds","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":"setMirror","inputs":[{"name":"newMirror","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signingThresholdPercentage","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validatedCodesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"wrappedVara","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"BlockCommitted","inputs":[{"name":"hash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CodeGotValidated","inputs":[{"name":"codeId","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":"ComputationSettingsChanged","inputs":[{"name":"threshold","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","indexed":false,"internalType":"uint128"}],"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":"ValidatorsChanged","inputs":[],"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":"0x6080806040523460aa575f5160206127725f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b6040516126c390816100af8239f35b6001600160401b0319166001600160401b039081175f5160206127725f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081627a32e714611bff5750806301b1d1561461149f5780631c149d8a1461134657806328e24b3d1461131c5780633d43b418146112ca578063527de0f91461124857806365ecfea21461120f5780636c2eb35014610f62578063715018a614610ef957806382bdeaad14610de157806384d22a4f14610d7857806388f50cf014610d3f5780638b1edf1e14610c785780638da5cb5b14610c435780638f381dbe14610bfd5780639067088e14610bb457806396a2ddfa14610b86578063baaf020114610a89578063c13911e814610a45578063c9f16a1114610a17578063ca1e78191461099e578063e6fabc0914610965578063e7006a741461084c578063e97d3eb31461061d578063ed612f8c146105ef578063edc87225146105ba578063efd81abc14610588578063f2fde38b14610560578063f8453e7c146101b75763facd743b14610167575f80fd5b346101b45760203660031901126101b457610180611c6f565b60095f51602061264e5f395f51905f5254019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346101b45760a03660031901126101b4576101d1611c6f565b6024356001600160a01b038116919082900361055c576044356001600160a01b0381169290839003610558576064356001600160a01b03811690819003610554576084356001600160401b03811161055057610231903690600401611c29565b915f51602061266e5f395f51905f52549460ff8660401c1615956001600160401b03811680159081610548575b600114908161053e575b159081610535575b506105265767ffffffffffffffff1981166001175f51602061266e5f395f51905f52556102b49190876104fa575b506102a7612483565b6102af612483565b611f5b565b60409586516102c38882611d62565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526102f7612129565b5190205f1981019081116104e657875190602082019081526020825261031d8983611d62565b60ff19915190201694855f51602061264e5f395f51905f525561033e612290565b80518755600187019063ffffffff60208201511669ffffffffffff000000008b845493015160201b169169ffffffffffffffffffff1916171790558288805161038681611d47565b8381526020810185905201526004860180546001600160a01b03199081166001600160a01b0393841617909155600587018054821693831693909317909255600686018054909216921691909117905560078301805461ffff1916611a0a1790556103f082611e4f565b916103fd86519384611d62565b808352602083019060051b8201913683116104e257905b8282106104ca575050509061042b600a92826122d5565b610433611e9e565b506509184e72a0006020855161044881611d18565b639502f900815201520180546001600160c01b0319166d09184e72a000000000009502f900179055610478575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f51602061266e5f395f51905f5254165f51602061266e5f395f51905f52555160018152a180f35b602080916104d784611c85565b815201910190610414565b8780fd5b634e487b7160e01b89526011600452602489fd5b68ffffffffffffffffff191668010000000000000001175f51602061266e5f395f51905f52555f61029e565b63f92ee8a960e01b8952600489fd5b9050155f610270565b303b159150610268565b88915061025e565b8580fd5b8480fd5b8380fd5b8280fd5b50346101b45760203660031901126101b45761058561057d611c6f565b6102af612129565b80f35b50346101b457806003193601126101b457602061ffff60075f51602061264e5f395f51905f5254015416604051908152f35b50346101b457806003193601126101b45760206105e760075f51602061264e5f395f51905f5254016123fc565b604051908152f35b50346101b457806003193601126101b457602060085f51602061264e5f395f51905f52540154604051908152f35b50346101b45760403660031901126101b457600435906001600160401b0382116101b457366023830112156101b4578160040135916001600160401b038311610848573660248460061b83010111610848576024356001600160401b03811161055c579061069084923690600401611c29565b935f51602061264e5f395f51905f5254926106ad84541515611ca6565b6060958293600b8601975b8786101561082b578560061b84016024810135918287528a60205260ff6040882054166003811015610817576001036107b4576001926107676044610794940161070181611f2c565b1561079c57828a528d60205260408a20600260ff19825416179055600e8c0161072a8154611f39565b90555b61073681611f2c565b15157f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020604051868152a2611f2c565b6040519060208201928352151560f81b60408201526021815261078b604182611d62565b51902090611d83565b9501946106b8565b828a528d60205260408a2060ff19815416905561072d565b60405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b6064820152608490fd5b634e487b7160e01b88526021600452602488fd5b84926105859288610843936020815191012090611fdf565b611db2565b5080fd5b50346101b45760603660031901126101b457610866611c6f565b602435906108ae6044359161087b838561215c565b93604051936020850191825260408501526040845261089b606085611d62565b92519092206001600160a01b0392612548565b1690813b1561055c5760405163204a7f0760e21b81528390818160048183885af1801561095a57610945575b50506001600160a01b031690813b1561055c576040519063485cc95560e01b82523360048301526024820152828160448183865af1801561093a57610925575b602082604051908152f35b610930838092611d62565b610848578161091a565b6040513d85823e3d90fd5b8161094f91611d62565b61055c57825f6108da565b6040513d84823e3d90fd5b50346101b457806003193601126101b4575f51602061264e5f395f51905f5254600401546040516001600160a01b039091168152602090f35b50346101b457806003193601126101b4576109c960085f51602061264e5f395f51905f525401611dfe565b90604051918291602083016020845282518091526020604085019301915b8181106109f5575050500390f35b82516001600160a01b03168452859450602093840193909201916001016109e7565b50346101b457806003193601126101b457602060025f51602061264e5f395f51905f52540154604051908152f35b50346101b45760203660031901126101b45760ff6040602092600b5f51602061264e5f395f51905f52540160043582528452205416610a876040518092611c99565bf35b50346101b45760203660031901126101b4576004356001600160401b03811161084857610aba903690600401611c29565b905f51602061264e5f395f51905f525490610ad483611e4f565b91610ae26040519384611d62565b838352610aee84611e4f565b602084019490601f1901368637600c869201915b818110610b4d57868587604051928392602084019060208552518091526040840192915b818110610b34575050500390f35b8251845285945060209384019390920191600101610b26565b80610b63610b5e6001938588611e66565b611eb6565b828060a01b03165f528360205260405f2054610b7f8288611e8a565b5201610b02565b50346101b457806003193601126101b4576020600d5f51602061264e5f395f51905f52540154604051908152f35b50346101b45760203660031901126101b457610bce611c6f565b600c5f51602061264e5f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b50346101b45760203660031901126101b457600435906001600160401b0382116101b4576020610c39610c333660048601611c29565b90611eca565b6040519015158152f35b50346101b457806003193601126101b4575f51602061262e5f395f51905f52546040516001600160a01b039091168152602090f35b50346101b457806003193601126101b4575f51602061264e5f395f51905f52548054610cfa5763ffffffff60018201541640908115610cb5575580f35b60405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e6573697320686173680000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c72656164792073657400000000000000006044820152606490fd5b50346101b457806003193601126101b4575f51602061264e5f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346101b457806003193601126101b457610d91611e9e565b506040600a5f51602061264e5f395f51905f5254016001600160801b03825191610dba83611d18565b548160206001600160401b038316948581520191851c168152835192835251166020820152f35b50346101b45760203660031901126101b4576004356001600160401b03811161084857610e12903690600401611c29565b905f51602061264e5f395f51905f525490610e2c83611e4f565b91610e3a6040519384611d62565b838352610e4684611e4f565b602084019490601f1901368637600b869201915b818110610eaf57868587604051928392602084019060208552518091526040840192915b818110610e8c575050500390f35b9193509160208082610ea16001948851611c99565b019401910191849392610e7e565b610eba818386611e66565b3587528260205260ff604088205416610ed38287611e8a565b6003821015610ee55752600101610e5a565b634e487b7160e01b89526021600452602489fd5b50346101b457806003193601126101b457610f12612129565b5f51602061262e5f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101b457806003193601126101b457610f7b612129565b5f51602061266e5f395f51905f525460ff8160401c1680156111fb575b6111ec57680100000000000000029068ffffffffffffffffff1916175f51602061266e5f395f51905f52555f51602061264e5f395f51905f52546040908151610fe18382611d62565b6017815260208101907f726f757465722e73746f726167652e526f7574657256320000000000000000008252611015612129565b5190205f1981019081116111d85791602091600a807fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2958451908682019081528682526110628683611d62565b60ff19915190201692835f51602061264e5f395f51905f5255611083612290565b80518555600185019063ffffffff888201511669ffffffffffff000000008884549301518a1b169169ffffffffffffffffffff19161717905560048101600485019080820361118a575b505061ffff600782015416600785019061ffff198254161790556110fc6110f660088301611dfe565b856122d5565b01910190808203611138575b505060ff60401b195f51602061266e5f395f51905f5254165f51602061266e5f395f51905f52555160028152a180f35b806001600160401b03806001600160801b03935416166001600160401b031984541617835554831c16600160401b600160c01b03825491841b1690600160401b600160c01b0319161790555f80611108565b5481546001600160a01b03199081166001600160a01b039283161790925560058381015490870180548416918316919091179055600680840154908701805490931691161790555f806110cd565b634e487b7160e01b84526011600452602484fd5b63f92ee8a960e01b8252600482fd5b5060026001600160401b0382161015610f98565b50346101b457806003193601126101b4575f51602061264e5f395f51905f5254600501546040516001600160a01b039091168152602090f35b346112c65761126861125936611c59565b6001600160a01b03929161215c565b16803b156112c6576040519063485cc95560e01b82523360048301525f60248301525f8260448183855af19182156112bb576020926112ab575b50604051908152f35b5f6112b591611d62565b5f6112a2565b6040513d5f823e3d90fd5b5f80fd5b346112c65760203660031901126112c6576112e3611c6f565b6112eb612129565b5f51602061264e5f395f51905f525460040180546001600160a01b0319166001600160a01b03909216919091179055005b346112c6575f3660031901126112c65760205f51602061264e5f395f51905f525454604051908152f35b346112c65761135436611c59565b908115801590611495575b1561145a57600b5f51602061264e5f395f51905f525461138181541515611ca6565b0190805f528160205260ff60405f2054166003811015611446576113e5577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b6044820152606490fd5b505f49151561135f565b346112c65760403660031901126112c6576004356001600160401b0381116112c6576114cf903690600401611c29565b906024356001600160401b0381116112c6576114ef903690600401611c29565b90917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c611bf0578360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f51602061264e5f395f51905f52549161155883541515611ca6565b6060935f905b83821015611bb4578160051b830135609e19843603018112156112c6578301936002860154604086013503611b615761159a606086013561242c565b15611b0d5760206115ac818701611fcc565b65ffffffffffff604051916115c083611d18565b883583521691829101528535600288015565ffffffffffff19600388015416176003870155608085013593601e19863603018512156112c6576001600160401b0385870135116112c6578486013560051b3603602086880101136112c6579597955f9260605b86880135851015611a6957878701600586901b81016020013590360360de19018112156112c65787890101602081019061165f82611eb6565b6001600160a01b03165f908152600c8e01602052604090205415611a0c5760068d01546001600160a01b03169161169581611eb6565b92608083019384356001600160801b0381168091036112c65760405163a9059cbb60e01b81526001600160a01b039092166004830152602482015290602090829060449082905f905af180156112bb576119d6575b506001600160a01b036116fc82611eb6565b16916001600160801b03611762604051956309ed323560e41b87526020600488015260e487019461173360018060a01b0391611c85565b166024880152604084013560448801526001600160a01b0361175760608601611c85565b16606488015261246f565b166084850152603e1936829003019060a0810135828112156112c657816020910101602081359101936001600160401b0382116112c65760608202360385136112c657819060c060a489015252610104860193905f905b80821061198c575050509d9e9c9d60c0810135918212156112c657602091010190813560208301926001600160401b0382116112c6578160051b9182360385136112c65792906023198783030160c488015283825260208083019383010194935f9260de1983360301925b8285106118995750505050505050602091839d9e9d5f81809403925af19081156112bb575f91611867575b5061185c90600192611d83565b940193999799611626565b90506020813d8211611891575b8161188160209383611d62565b810103126112c65751600161184f565b3d9150611874565b90919293949596601f198382030187528735858112156112c657820160208101358252906001600160a01b036118d160408401611c85565b1660208201526060820135603e1936849003018112156112c65782602091010191602083359301906001600160401b0384116112c65783360382136112c6578360c092836040860152818486015260e08501375f60e085850101526001600160801b036119406080830161246f565b16606084015260a0810135608084015201359163ffffffff60e01b83168093036112c65760e0826020939260019560a086950152601f8019910116010199019701950193929190611824565b90919460608060019288358152838060a01b036119ab60208b01611c85565b1660208201526001600160801b036119c560408b0161246f565b1660408201520196019201906117b9565b6020813d8211611a04575b816119ee60209383611d62565b810103126112c6575180151581146116ea575f80fd5b3d91506119e1565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b611b02939a98959992979196506001945060208151910120907fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e602060405183358152a1611ab960208201611fcc565b9160606040519260208401948135865265ffffffffffff60d01b9060d01b166040850152604081013560468501520135606683015260868201526086815261078b60a682611d62565b95019095929161155e565b60405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b6064820152608490fd5b610843611bcb918887896020815191012090611fdf565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b633ee5aeb560e01b5f5260045ffd5b346112c6575f3660031901126112c657602090600e5f51602061264e5f395f51905f525401548152f35b9181601f840112156112c6578235916001600160401b0383116112c6576020808501948460051b0101116112c657565b60409060031901126112c6576004359060243590565b600435906001600160a01b03821682036112c657565b35906001600160a01b03821682036112c657565b9060038210156114465752565b15611cad57565b60405162461bcd60e51b815260206004820152603860248201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60448201527f6f6b757047656e657369734861736828296020666972737400000000000000006064820152608490fd5b604081019081106001600160401b03821117611d3357604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117611d3357604052565b90601f801991011681019081106001600160401b03821117611d3357604052565b602080611db0928195946040519682889351918291018585015e8201908382015203018085520183611d62565b565b15611db957565b60405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c656400006044820152606490fd5b90604051918281549182825260208201905f5260205f20925f5b818110611e2d575050611db092500383611d62565b84546001600160a01b0316835260019485019487945060209093019201611e18565b6001600160401b038111611d335760051b60200190565b9190811015611e765760051b0190565b634e487b7160e01b5f52603260045260245ffd5b8051821015611e765760209160051b010190565b60405190611eab82611d18565b5f6020838281520152565b356001600160a01b03811681036112c65790565b5f51602061264e5f395f51905f5254600901905f5b838110611eef5750505050600190565b611efd610b5e828685611e66565b6001600160a01b03165f9081526020849052604090205460ff1615611f2457600101611edf565b505050505f90565b3580151581036112c65790565b5f198114611f475760010190565b634e487b7160e01b5f52601160045260245ffd5b6001600160a01b03168015611fb9575f51602061262e5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b3565ffffffffffff811681036112c65790565b919091611fee600782016123fc565b92604051906020820190815260208252612009604083611d62565b612045603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282611d62565b5190205f9260095f9301925b8681101561211e578060051b820135601e19833603018112156112c65782018035906001600160401b0382116112c657602081019082360382136112c657604051906120a7601f8501601f191660200183611d62565b83825260208436920101116112c6575f6020846120d9956120d0958386013783010152856124ae565b909291926124e8565b6001600160a01b03165f9081526020859052604090205460ff16612100575b600101612051565b9361210a90611f39565b938585036120f85750505050505050600190565b505050505050505f90565b5f51602061262e5f395f51905f52546001600160a01b0316330361214957565b63118cdaa760e01b5f523360045260245ffd5b5f51602061264e5f395f51905f52549161217883541515611ca6565b815f52600b830160205260ff60405f205416600381101561144657600203612234576121d6600d9160018060a01b036005860154169060405160208101918683526040820152604081526121cd606082611d62565b51902090612548565b9260018060a01b0384165f52600c81016020528260405f2055016121fa8154611f39565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a290565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f6040805161229e81611d47565b82815282602082015201526040516122b581611d47565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b90600882019081546123b8579091600901905f5b815181101561232a576001906001600160a01b036123078285611e8a565b5116828060a01b03165f528360205260405f208260ff19825416179055016122e9565b5080519291506001600160401b038311611d3357680100000000000000008311611d33578154838355808410612392575b50602001905f5260205f205f5b8381106123755750505050565b82516001600160a01b031681830155602090920191600101612368565b825f528360205f2091820191015b8181106123ad575061235b565b5f81556001016123a0565b606460405162461bcd60e51b815260206004820152602060248201527f72656d6f76652070726576696f75732076616c696461746f72732066697273746044820152fd5b61ffff600182015491541690818102918183041490151715611f475761270f8101809111611f4757612710900490565b905f194301438111611f4757805b612445575b505f9150565b804083810361245657506001925050565b1561246a578015611f47575f19018061243a565b61243f565b35906001600160801b03821682036112c657565b60ff5f51602061266e5f395f51905f525460401c161561249f57565b631afcd79f60e31b5f5260045ffd5b81519190604183036124de576124d79250602082015190606060408401519301515f1a906125ab565b9192909190565b50505f9160029190565b600481101561144657806124fa575050565b600181036125115763f645eedf60e01b5f5260045ffd5b6002810361252c575063fce698f760e01b5f5260045260245ffd5b6003146125365750565b6335e2f38360e21b5f5260045260245ffd5b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b0382161561259c57565b63b06ebf3d60e01b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612622579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156112bb575f516001600160a01b0381161561261857905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220e9a483acd9d0e5bc802a7a40d304ef919fc2d99f2eaefd0c5911639d8942e10b64736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"632:13273:159:-:0;;;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;;7896:76:26;;-1:-1:-1;;;;;;;;;;;632:13273:159;;7985:34:26;7981:146;;-1:-1:-1;632:13273:159;;;;;;;;;7981:146:26;-1:-1:-1;;;;;;632:13273:159;-1:-1:-1;;;;;632:13273:159;;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;8087:29:26;;632:13273:159;;8087:29:26;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:26;;-1:-1:-1;7938:23:26;632:13273:159;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081627a32e714611bff5750806301b1d1561461149f5780631c149d8a1461134657806328e24b3d1461131c5780633d43b418146112ca578063527de0f91461124857806365ecfea21461120f5780636c2eb35014610f62578063715018a614610ef957806382bdeaad14610de157806384d22a4f14610d7857806388f50cf014610d3f5780638b1edf1e14610c785780638da5cb5b14610c435780638f381dbe14610bfd5780639067088e14610bb457806396a2ddfa14610b86578063baaf020114610a89578063c13911e814610a45578063c9f16a1114610a17578063ca1e78191461099e578063e6fabc0914610965578063e7006a741461084c578063e97d3eb31461061d578063ed612f8c146105ef578063edc87225146105ba578063efd81abc14610588578063f2fde38b14610560578063f8453e7c146101b75763facd743b14610167575f80fd5b346101b45760203660031901126101b457610180611c6f565b60095f51602061264e5f395f51905f5254019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346101b45760a03660031901126101b4576101d1611c6f565b6024356001600160a01b038116919082900361055c576044356001600160a01b0381169290839003610558576064356001600160a01b03811690819003610554576084356001600160401b03811161055057610231903690600401611c29565b915f51602061266e5f395f51905f52549460ff8660401c1615956001600160401b03811680159081610548575b600114908161053e575b159081610535575b506105265767ffffffffffffffff1981166001175f51602061266e5f395f51905f52556102b49190876104fa575b506102a7612483565b6102af612483565b611f5b565b60409586516102c38882611d62565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526102f7612129565b5190205f1981019081116104e657875190602082019081526020825261031d8983611d62565b60ff19915190201694855f51602061264e5f395f51905f525561033e612290565b80518755600187019063ffffffff60208201511669ffffffffffff000000008b845493015160201b169169ffffffffffffffffffff1916171790558288805161038681611d47565b8381526020810185905201526004860180546001600160a01b03199081166001600160a01b0393841617909155600587018054821693831693909317909255600686018054909216921691909117905560078301805461ffff1916611a0a1790556103f082611e4f565b916103fd86519384611d62565b808352602083019060051b8201913683116104e257905b8282106104ca575050509061042b600a92826122d5565b610433611e9e565b506509184e72a0006020855161044881611d18565b639502f900815201520180546001600160c01b0319166d09184e72a000000000009502f900179055610478575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f51602061266e5f395f51905f5254165f51602061266e5f395f51905f52555160018152a180f35b602080916104d784611c85565b815201910190610414565b8780fd5b634e487b7160e01b89526011600452602489fd5b68ffffffffffffffffff191668010000000000000001175f51602061266e5f395f51905f52555f61029e565b63f92ee8a960e01b8952600489fd5b9050155f610270565b303b159150610268565b88915061025e565b8580fd5b8480fd5b8380fd5b8280fd5b50346101b45760203660031901126101b45761058561057d611c6f565b6102af612129565b80f35b50346101b457806003193601126101b457602061ffff60075f51602061264e5f395f51905f5254015416604051908152f35b50346101b457806003193601126101b45760206105e760075f51602061264e5f395f51905f5254016123fc565b604051908152f35b50346101b457806003193601126101b457602060085f51602061264e5f395f51905f52540154604051908152f35b50346101b45760403660031901126101b457600435906001600160401b0382116101b457366023830112156101b4578160040135916001600160401b038311610848573660248460061b83010111610848576024356001600160401b03811161055c579061069084923690600401611c29565b935f51602061264e5f395f51905f5254926106ad84541515611ca6565b6060958293600b8601975b8786101561082b578560061b84016024810135918287528a60205260ff6040882054166003811015610817576001036107b4576001926107676044610794940161070181611f2c565b1561079c57828a528d60205260408a20600260ff19825416179055600e8c0161072a8154611f39565b90555b61073681611f2c565b15157f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020604051868152a2611f2c565b6040519060208201928352151560f81b60408201526021815261078b604182611d62565b51902090611d83565b9501946106b8565b828a528d60205260408a2060ff19815416905561072d565b60405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b6064820152608490fd5b634e487b7160e01b88526021600452602488fd5b84926105859288610843936020815191012090611fdf565b611db2565b5080fd5b50346101b45760603660031901126101b457610866611c6f565b602435906108ae6044359161087b838561215c565b93604051936020850191825260408501526040845261089b606085611d62565b92519092206001600160a01b0392612548565b1690813b1561055c5760405163204a7f0760e21b81528390818160048183885af1801561095a57610945575b50506001600160a01b031690813b1561055c576040519063485cc95560e01b82523360048301526024820152828160448183865af1801561093a57610925575b602082604051908152f35b610930838092611d62565b610848578161091a565b6040513d85823e3d90fd5b8161094f91611d62565b61055c57825f6108da565b6040513d84823e3d90fd5b50346101b457806003193601126101b4575f51602061264e5f395f51905f5254600401546040516001600160a01b039091168152602090f35b50346101b457806003193601126101b4576109c960085f51602061264e5f395f51905f525401611dfe565b90604051918291602083016020845282518091526020604085019301915b8181106109f5575050500390f35b82516001600160a01b03168452859450602093840193909201916001016109e7565b50346101b457806003193601126101b457602060025f51602061264e5f395f51905f52540154604051908152f35b50346101b45760203660031901126101b45760ff6040602092600b5f51602061264e5f395f51905f52540160043582528452205416610a876040518092611c99565bf35b50346101b45760203660031901126101b4576004356001600160401b03811161084857610aba903690600401611c29565b905f51602061264e5f395f51905f525490610ad483611e4f565b91610ae26040519384611d62565b838352610aee84611e4f565b602084019490601f1901368637600c869201915b818110610b4d57868587604051928392602084019060208552518091526040840192915b818110610b34575050500390f35b8251845285945060209384019390920191600101610b26565b80610b63610b5e6001938588611e66565b611eb6565b828060a01b03165f528360205260405f2054610b7f8288611e8a565b5201610b02565b50346101b457806003193601126101b4576020600d5f51602061264e5f395f51905f52540154604051908152f35b50346101b45760203660031901126101b457610bce611c6f565b600c5f51602061264e5f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b50346101b45760203660031901126101b457600435906001600160401b0382116101b4576020610c39610c333660048601611c29565b90611eca565b6040519015158152f35b50346101b457806003193601126101b4575f51602061262e5f395f51905f52546040516001600160a01b039091168152602090f35b50346101b457806003193601126101b4575f51602061264e5f395f51905f52548054610cfa5763ffffffff60018201541640908115610cb5575580f35b60405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e6573697320686173680000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c72656164792073657400000000000000006044820152606490fd5b50346101b457806003193601126101b4575f51602061264e5f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346101b457806003193601126101b457610d91611e9e565b506040600a5f51602061264e5f395f51905f5254016001600160801b03825191610dba83611d18565b548160206001600160401b038316948581520191851c168152835192835251166020820152f35b50346101b45760203660031901126101b4576004356001600160401b03811161084857610e12903690600401611c29565b905f51602061264e5f395f51905f525490610e2c83611e4f565b91610e3a6040519384611d62565b838352610e4684611e4f565b602084019490601f1901368637600b869201915b818110610eaf57868587604051928392602084019060208552518091526040840192915b818110610e8c575050500390f35b9193509160208082610ea16001948851611c99565b019401910191849392610e7e565b610eba818386611e66565b3587528260205260ff604088205416610ed38287611e8a565b6003821015610ee55752600101610e5a565b634e487b7160e01b89526021600452602489fd5b50346101b457806003193601126101b457610f12612129565b5f51602061262e5f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101b457806003193601126101b457610f7b612129565b5f51602061266e5f395f51905f525460ff8160401c1680156111fb575b6111ec57680100000000000000029068ffffffffffffffffff1916175f51602061266e5f395f51905f52555f51602061264e5f395f51905f52546040908151610fe18382611d62565b6017815260208101907f726f757465722e73746f726167652e526f7574657256320000000000000000008252611015612129565b5190205f1981019081116111d85791602091600a807fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2958451908682019081528682526110628683611d62565b60ff19915190201692835f51602061264e5f395f51905f5255611083612290565b80518555600185019063ffffffff888201511669ffffffffffff000000008884549301518a1b169169ffffffffffffffffffff19161717905560048101600485019080820361118a575b505061ffff600782015416600785019061ffff198254161790556110fc6110f660088301611dfe565b856122d5565b01910190808203611138575b505060ff60401b195f51602061266e5f395f51905f5254165f51602061266e5f395f51905f52555160028152a180f35b806001600160401b03806001600160801b03935416166001600160401b031984541617835554831c16600160401b600160c01b03825491841b1690600160401b600160c01b0319161790555f80611108565b5481546001600160a01b03199081166001600160a01b039283161790925560058381015490870180548416918316919091179055600680840154908701805490931691161790555f806110cd565b634e487b7160e01b84526011600452602484fd5b63f92ee8a960e01b8252600482fd5b5060026001600160401b0382161015610f98565b50346101b457806003193601126101b4575f51602061264e5f395f51905f5254600501546040516001600160a01b039091168152602090f35b346112c65761126861125936611c59565b6001600160a01b03929161215c565b16803b156112c6576040519063485cc95560e01b82523360048301525f60248301525f8260448183855af19182156112bb576020926112ab575b50604051908152f35b5f6112b591611d62565b5f6112a2565b6040513d5f823e3d90fd5b5f80fd5b346112c65760203660031901126112c6576112e3611c6f565b6112eb612129565b5f51602061264e5f395f51905f525460040180546001600160a01b0319166001600160a01b03909216919091179055005b346112c6575f3660031901126112c65760205f51602061264e5f395f51905f525454604051908152f35b346112c65761135436611c59565b908115801590611495575b1561145a57600b5f51602061264e5f395f51905f525461138181541515611ca6565b0190805f528160205260ff60405f2054166003811015611446576113e5577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b6044820152606490fd5b505f49151561135f565b346112c65760403660031901126112c6576004356001600160401b0381116112c6576114cf903690600401611c29565b906024356001600160401b0381116112c6576114ef903690600401611c29565b90917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c611bf0578360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f51602061264e5f395f51905f52549161155883541515611ca6565b6060935f905b83821015611bb4578160051b830135609e19843603018112156112c6578301936002860154604086013503611b615761159a606086013561242c565b15611b0d5760206115ac818701611fcc565b65ffffffffffff604051916115c083611d18565b883583521691829101528535600288015565ffffffffffff19600388015416176003870155608085013593601e19863603018512156112c6576001600160401b0385870135116112c6578486013560051b3603602086880101136112c6579597955f9260605b86880135851015611a6957878701600586901b81016020013590360360de19018112156112c65787890101602081019061165f82611eb6565b6001600160a01b03165f908152600c8e01602052604090205415611a0c5760068d01546001600160a01b03169161169581611eb6565b92608083019384356001600160801b0381168091036112c65760405163a9059cbb60e01b81526001600160a01b039092166004830152602482015290602090829060449082905f905af180156112bb576119d6575b506001600160a01b036116fc82611eb6565b16916001600160801b03611762604051956309ed323560e41b87526020600488015260e487019461173360018060a01b0391611c85565b166024880152604084013560448801526001600160a01b0361175760608601611c85565b16606488015261246f565b166084850152603e1936829003019060a0810135828112156112c657816020910101602081359101936001600160401b0382116112c65760608202360385136112c657819060c060a489015252610104860193905f905b80821061198c575050509d9e9c9d60c0810135918212156112c657602091010190813560208301926001600160401b0382116112c6578160051b9182360385136112c65792906023198783030160c488015283825260208083019383010194935f9260de1983360301925b8285106118995750505050505050602091839d9e9d5f81809403925af19081156112bb575f91611867575b5061185c90600192611d83565b940193999799611626565b90506020813d8211611891575b8161188160209383611d62565b810103126112c65751600161184f565b3d9150611874565b90919293949596601f198382030187528735858112156112c657820160208101358252906001600160a01b036118d160408401611c85565b1660208201526060820135603e1936849003018112156112c65782602091010191602083359301906001600160401b0384116112c65783360382136112c6578360c092836040860152818486015260e08501375f60e085850101526001600160801b036119406080830161246f565b16606084015260a0810135608084015201359163ffffffff60e01b83168093036112c65760e0826020939260019560a086950152601f8019910116010199019701950193929190611824565b90919460608060019288358152838060a01b036119ab60208b01611c85565b1660208201526001600160801b036119c560408b0161246f565b1660408201520196019201906117b9565b6020813d8211611a04575b816119ee60209383611d62565b810103126112c6575180151581146116ea575f80fd5b3d91506119e1565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b611b02939a98959992979196506001945060208151910120907fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e602060405183358152a1611ab960208201611fcc565b9160606040519260208401948135865265ffffffffffff60d01b9060d01b166040850152604081013560468501520135606683015260868201526086815261078b60a682611d62565b95019095929161155e565b60405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b6064820152608490fd5b610843611bcb918887896020815191012090611fdf565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b633ee5aeb560e01b5f5260045ffd5b346112c6575f3660031901126112c657602090600e5f51602061264e5f395f51905f525401548152f35b9181601f840112156112c6578235916001600160401b0383116112c6576020808501948460051b0101116112c657565b60409060031901126112c6576004359060243590565b600435906001600160a01b03821682036112c657565b35906001600160a01b03821682036112c657565b9060038210156114465752565b15611cad57565b60405162461bcd60e51b815260206004820152603860248201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60448201527f6f6b757047656e657369734861736828296020666972737400000000000000006064820152608490fd5b604081019081106001600160401b03821117611d3357604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117611d3357604052565b90601f801991011681019081106001600160401b03821117611d3357604052565b602080611db0928195946040519682889351918291018585015e8201908382015203018085520183611d62565b565b15611db957565b60405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c656400006044820152606490fd5b90604051918281549182825260208201905f5260205f20925f5b818110611e2d575050611db092500383611d62565b84546001600160a01b0316835260019485019487945060209093019201611e18565b6001600160401b038111611d335760051b60200190565b9190811015611e765760051b0190565b634e487b7160e01b5f52603260045260245ffd5b8051821015611e765760209160051b010190565b60405190611eab82611d18565b5f6020838281520152565b356001600160a01b03811681036112c65790565b5f51602061264e5f395f51905f5254600901905f5b838110611eef5750505050600190565b611efd610b5e828685611e66565b6001600160a01b03165f9081526020849052604090205460ff1615611f2457600101611edf565b505050505f90565b3580151581036112c65790565b5f198114611f475760010190565b634e487b7160e01b5f52601160045260245ffd5b6001600160a01b03168015611fb9575f51602061262e5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b3565ffffffffffff811681036112c65790565b919091611fee600782016123fc565b92604051906020820190815260208252612009604083611d62565b612045603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282611d62565b5190205f9260095f9301925b8681101561211e578060051b820135601e19833603018112156112c65782018035906001600160401b0382116112c657602081019082360382136112c657604051906120a7601f8501601f191660200183611d62565b83825260208436920101116112c6575f6020846120d9956120d0958386013783010152856124ae565b909291926124e8565b6001600160a01b03165f9081526020859052604090205460ff16612100575b600101612051565b9361210a90611f39565b938585036120f85750505050505050600190565b505050505050505f90565b5f51602061262e5f395f51905f52546001600160a01b0316330361214957565b63118cdaa760e01b5f523360045260245ffd5b5f51602061264e5f395f51905f52549161217883541515611ca6565b815f52600b830160205260ff60405f205416600381101561144657600203612234576121d6600d9160018060a01b036005860154169060405160208101918683526040820152604081526121cd606082611d62565b51902090612548565b9260018060a01b0384165f52600c81016020528260405f2055016121fa8154611f39565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a290565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f6040805161229e81611d47565b82815282602082015201526040516122b581611d47565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b90600882019081546123b8579091600901905f5b815181101561232a576001906001600160a01b036123078285611e8a565b5116828060a01b03165f528360205260405f208260ff19825416179055016122e9565b5080519291506001600160401b038311611d3357680100000000000000008311611d33578154838355808410612392575b50602001905f5260205f205f5b8381106123755750505050565b82516001600160a01b031681830155602090920191600101612368565b825f528360205f2091820191015b8181106123ad575061235b565b5f81556001016123a0565b606460405162461bcd60e51b815260206004820152602060248201527f72656d6f76652070726576696f75732076616c696461746f72732066697273746044820152fd5b61ffff600182015491541690818102918183041490151715611f475761270f8101809111611f4757612710900490565b905f194301438111611f4757805b612445575b505f9150565b804083810361245657506001925050565b1561246a578015611f47575f19018061243a565b61243f565b35906001600160801b03821682036112c657565b60ff5f51602061266e5f395f51905f525460401c161561249f57565b631afcd79f60e31b5f5260045ffd5b81519190604183036124de576124d79250602082015190606060408401519301515f1a906125ab565b9192909190565b50505f9160029190565b600481101561144657806124fa575050565b600181036125115763f645eedf60e01b5f5260045ffd5b6002810361252c575063fce698f760e01b5f5260045260245ffd5b6003146125365750565b6335e2f38360e21b5f5260045260245ffd5b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b0382161561259c57565b63b06ebf3d60e01b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612622579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156112bb575f516001600160a01b0381161561261857905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220e9a483acd9d0e5bc802a7a40d304ef919fc2d99f2eaefd0c5911639d8942e10b64736f6c634300081c0033","sourceMap":"632:13273:159:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;:::i;:::-;3380:45;-1:-1:-1;;;;;;;;;;;632:13273:159;3380:45;:57;632:13273;;;;;;-1:-1:-1;632:13273:159;;;;;;-1:-1:-1;632:13273:159;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;:::i;:::-;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;;;4301:16:26;632:13273:159;-1:-1:-1;;;;;632:13273:159;;4726:16:26;;:34;;;;632:13273:159;4805:1:26;4790:16;:50;;;;632:13273:159;4855:13:26;:30;;;;632:13273:159;4851:91:26;;;-1:-1:-1;;632:13273:159;;4805:1:26;632:13273:159;-1:-1:-1;;;;;;;;;;;632:13273:159;6961:1:26;;632:13273:159;;4979:67:26;;632:13273:159;6893:76:26;;;:::i;:::-;;;:::i;:::-;6961:1;:::i;:::-;632:13273:159;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:25;;:::i;:::-;632:13273:159;13773:27;;-1:-1:-1;;632:13273:159;;;;;;;;;13754:52;632:13273;13754:52;;632:13273;;;;13754:52;;;;;;:::i;:::-;632:13273;;;;13744:63;;:89;632:13273;;-1:-1:-1;;;;;;;;;;;632:13273:159;1394:17;;:::i;:::-;632:13273;;;;4805:1:26;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;1444:53;;632:13273;;;1444:53;632:13273;;1421:20;;632:13273;;-1:-1:-1;;;;;;632:13273:159;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1507:25;;;632:13273;;-1:-1:-1;;632:13273:159;;;;;577:4:161;;;:::i;:::-;632:13273:159;;;;;;;:::i;:::-;577:4:161;;;632:13273:159;577:4:161;;;632:13273:159;577:4:161;;;632:13273:159;;577:4:161;;;;;;;;;;;1605:35:159;;;;;1650:22;1605:35;;;:::i;:::-;632:13273;;:::i;:::-;;674:18:161;632:13273:159;;;;;;:::i;:::-;447:13:161;632:13273:159;;3489:60:161;632:13273:159;1650:22;632:13273;;-1:-1:-1;;;;;;632:13273:159;;;;;5066:101:26;;632:13273:159;;;5066:101:26;632:13273:159;5142:14:26;632:13273:159;-1:-1:-1;;;632:13273:159;-1:-1:-1;;;;;;;;;;;632:13273:159;;-1:-1:-1;;;;;;;;;;;632:13273:159;;4805:1:26;632:13273:159;;5142:14:26;632:13273:159;;577:4:161;632:13273:159;;;;;;:::i;:::-;577:4:161;;;;;;;;;632:13273:159;;;;-1:-1:-1;;;632:13273:159;;;;;;;;4979:67:26;-1:-1:-1;;632:13273:159;;;-1:-1:-1;;;;;;;;;;;632:13273:159;4979:67:26;;;4851:91;-1:-1:-1;;;4908:23:26;;632:13273:159;6498:23:26;4908;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:26;;4726:34;;;-1:-1:-1;4726:34:26;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;2357:1:25;632:13273:159;;:::i;:::-;2303:62:25;;:::i;2357:1::-;632:13273:159;;;;;;;;;;;;;;;;;3534:28;-1:-1:-1;;;;;;;;;;;632:13273:159;3534:28;632:13273;;;;;;;;;;;;;;;;;;;;;;3943:56;3970:28;-1:-1:-1;;;;;;;;;;;632:13273:159;3970:28;3943:56;:::i;:::-;632:13273;;;;;;;;;;;;;;;;;;;;3806:39;-1:-1:-1;;;;;;;;;;;632:13273:159;3806:39;632:13273;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;632:13273:159;;7474:107;632:13273;;7482:38;;7474:107;:::i;:::-;632:13273;7642:13;;7810:19;;;;7637:838;7686:3;7657:27;;;;;;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7810:82;632:13273;;;7998:20;3348::161;7998::159;8388:76;7998:20;;;;;:::i;:::-;;;;632:13273;;;;;;;;;8085:24;632:13273;;;;;;;;8127:39;;;:41;632:13273;;8127:41;:::i;:::-;632:13273;;7994:279;8328:20;;;:::i;:::-;632:13273;;8292:57;632:13273;;;;;;8292:57;3348:20:161;:::i;:::-;632:13273:159;;3312:57:161;632:13273:159;3312:57:161;;632:13273:159;;;;;;;;;;;;3312:57:161;;;;;;:::i;:::-;632:13273:159;3302:68:161;;8388:76:159;;:::i;:::-;7686:3;632:13273;7642:13;;;7994:279;632:13273;;;;;;;;;;;;;;;;7994:279;;632:13273;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;;7657:27;;;8485:155;7657:27;;8506:78;7657:27;632:13273;;;;;8538:32;8506:78;;:::i;:::-;8485:155;:::i;632:13273::-;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;:::i;:::-;;;;2935:43:44;632:13273:159;;7058:30;;;;;:::i;:::-;632:13273;;;7155:32;632:13273;7155:32;;632:13273;;;;;;;;7155:32;;;632:13273;7155:32;;:::i;:::-;632:13273;;7145:43;;;-1:-1:-1;;;;;632:13273:159;2935:43:44;:::i;:::-;632:13273:159;10564:36;;;;;;632:13273;;-1:-1:-1;;;10564:36:159;;632:13273;;;;;;;10564:36;;;;;;;;;632:13273;-1:-1:-1;;;;;;;632:13273:159;;7200:47;;;;;632:13273;;;;;;7200:47;;7227:10;632:13273;7200:47;;632:13273;;;;;7200:47;;632:13273;7200:47;;;;;;;;;;;632:13273;;;;;;;;;7200:47;;;;;;:::i;:::-;632:13273;;7200:47;;;;632:13273;;;;;;;;;10564:36;;;;;:::i;:::-;632:13273;;10564:36;;;;;632:13273;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;;2658:23;632:13273;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;3680:39;-1:-1:-1;;;;;;;;;;;632:13273:159;3680:39;632:13273;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;-1:-1:-1;632:13273:159;;;;;;;;;3680:39;632:13273;;;;;;;;;;;;;;;;;2541:30;-1:-1:-1;;;;;;;;;;;632:13273:159;2541:30;632:13273;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;;;4238:22;-1:-1:-1;;;;;;;;;;;632:13273:159;4238:22;632:13273;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;632:13273:159;;;;5111:28;5043:13;5111:28;;5038:129;5058:23;;;;;;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:13273:159;;;;;;;;;5111:28;632:13273;;;5083:3;5140:15;;;5111:28;5140:15;;;;:::i;:::-;;:::i;:::-;632:13273;;;;;;-1:-1:-1;632:13273:159;;;;;-1:-1:-1;632:13273:159;;5102:54;;;;:::i;:::-;632:13273;;5043:13;;632:13273;;;;;;;;;;;;;;5272:36;-1:-1:-1;;;;;;;;;;;632:13273:159;5272:36;632:13273;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;:::i;:::-;4762:31;-1:-1:-1;;;;;;;;;;;632:13273:159;4762:31;:43;632:13273;;;;;;-1:-1:-1;632:13273:159;;;;;-1:-1:-1;632:13273:159;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;;5823:26;;;632:13273;;5813:37;5869:25;;;632:13273;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;2893:35;;632:13273;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;4110:25;-1:-1:-1;;;;;;;;;;;632:13273:159;4110:25;-1:-1:-1;;;;;632:13273:159;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;632:13273:159;;;;4589:19;4524:13;4589:19;;4519:120;4539:20;;;;;;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;4561:3;4615:12;;;;;:::i;:::-;632:13273;;;;;;;;;;;;4580:48;;;;:::i;:::-;632:13273;;;;;;;;;4524:13;;632:13273;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:13273:159;;-1:-1:-1;;;;;;632:13273:159;;;;;;;-1:-1:-1;;;;;632:13273:159;3975:40:25;632:13273:159;;3975:40:25;632:13273:159;;;;;;;;;;;;;;;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;;6431:44:26;;;;632:13273:159;6427:105:26;;632:13273:159;;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:25;;:::i;:::-;632:13273:159;13773:27;;-1:-1:-1;;632:13273:159;;;;;;;;;;2289:25;632:13273;6656:20:26;632:13273:159;;;13754:52;;;;632:13273;;;13754:52;;;;;;;:::i;:::-;632:13273;;;;13744:63;;:89;632:13273;;-1:-1:-1;;;;;;;;;;;632:13273:159;1962:17;;:::i;:::-;632:13273;;;;6593:4:26;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;2015:23;;632:13273;1989:23;;632:13273;;;;;;;2119:28;;632:13273;2119:28;;;632:13273;;2119:28;2049;;632:13273;;;;;;;;;2184:66;632:13273;2210:39;;;632:13273;:::i;:::-;2184:66;;:::i;:::-;2289:25;2261;;632:13273;;;;;;;;;-1:-1:-1;;;632:13273:159;-1:-1:-1;;;;;;;;;;;632:13273:159;;-1:-1:-1;;;;;;;;;;;632:13273:159;;1776:1;632:13273;;6656:20:26;632:13273:159;;;;-1:-1:-1;;;;;632:13273:159;-1:-1:-1;;;;;632:13273:159;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;-1:-1:-1;;;;;;;632:13273:159;;;;;;;-1:-1:-1;;;;;;;632:13273:159;;;;;;;;;;;;;-1:-1:-1;;;;;;632:13273:159;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;-1:-1:-1;;;632:13273:159;;;;;;;;6427:105:26;-1:-1:-1;;;6498:23:26;;632:13273:159;6498:23:26;;6431:44;632:13273:159;1776:1;-1:-1:-1;;;;;632:13273:159;;6450:25:26;;6431:44;;632:13273:159;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;2775:35;;632:13273;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;6768:30;632:13273;;;:::i;:::-;-1:-1:-1;;;;;632:13273:159;;6768:30;:::i;:::-;632:13273;6809:50;;;;;632:13273;;;;;;6809:50;;6836:10;632:13273;6809:50;;632:13273;;;;;;;6809:50;;;;;;;;;;;;632:13273;6809:50;;;632:13273;;;;;;;;6809:50;632:13273;6809:50;;;:::i;:::-;632:13273;6809:50;;;632:13273;;;;;;;;;6809:50;632:13273;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;:::i;:::-;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:13273:159;;5541:23;632:13273;;-1:-1:-1;;;;;;632:13273:159;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;;;;;;;;;;;:::i;:::-;6112:16;;;;;:36;;;632:13273;;;;6366:19;-1:-1:-1;;;;;;;;;;;632:13273:159;6227:107;632:13273;;6235:38;;6227:107;:::i;:::-;6366:19;632:13273;;;;;;;;;;;;;;;;;;;;;6601:45;632:13273;;;;;;;;;;;6551:34;632:13273;;;;;;;;;;;;;;;;;6601:45;632:13273;;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;6112:36;6132:11;632:13273;6132:11;:16;;6112:36;;632:13273;;;;;;-1:-1:-1;;632:13273:159;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;:::i;:::-;7368:53:64;;516:66:62;7368:53:64;1292:93:62;;7628:52:64;1503:4:62;516:66;7628:52:64;-1:-1:-1;;;;;;;;;;;632:13273:159;;8852:107;632:13273;;8860:38;;8852:107;:::i;:::-;632:13273;9021:13;632:13273;9016:262;9066:3;9036:28;;;;;;632:13273;;;;;;;;;;;;;;;;;;;10809:27;;;;632:13273;;10845:39;;632:13273;10809:75;632:13273;;10966:58;632:13273;10990:33;;632:13273;10966:58;:::i;:::-;632:13273;;;;11284:26;;;;;:::i;:::-;632:13273;;;;;;;:::i;:::-;;;;;;11237:74;;;;632:13273;;;10809:27;;;632:13273;;;;;;;;;;;;;11381:28;;;632:13273;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;11892:30;;;632:13273;;;11978:3;632:13273;;;;11953:23;;;;;632:13273;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;;;;;;;;12124:18;;;;:::i;:::-;-1:-1:-1;;;;;632:13273:159;;;;;12095:28;;;632:13273;;;;;;12095:53;632:13273;;12241:32;;;632:13273;-1:-1:-1;;;;;632:13273:159;;12284:18;;;:::i;:::-;12304:25;11381:28;12304:25;;632:13273;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;-1:-1:-1;;;12228:102:159;;-1:-1:-1;;;;;632:13273:159;;;;12228:102;;632:13273;;;;;;;;;;12228:102;;632:13273;;;;12228:102;;;;;;;;11978:3;-1:-1:-1;;;;;;12378:18:159;;;:::i;:::-;632:13273;;-1:-1:-1;;;;;632:13273:159;;;;;;;12370:62;;632:13273;;12370:62;;632:13273;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;12228:102;632:13273;;;-1:-1:-1;;;;;632:13273:159;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12370:62;;;;;;;632:13273;12370:62;;;;;632:13273;12370:62;;;;;;;;;;;;632:13273;12370:62;;;632:13273;12467:47;;;1503:4:62;12467:47:159;;:::i;:::-;11978:3;632:13273;11938:13;;;;;;12370:62;;;632:13273;12370:62;;;;;;;;;632:13273;12370:62;;;:::i;:::-;;;632:13273;;;;;1503:4:62;12370:62:159;;;;;-1:-1:-1;12370:62:159;;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;11381:28;632:13273;;;:::i;:::-;;;;;;;;;;11381:28;632:13273;;;;;;;;;;;;;;;;;;;;;1503:4:62;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1503:4:62;632:13273:159;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;:::i;:::-;;;;;;;;;;;;;;12228:102;632:13273;12228:102;;;;;;;;;632:13273;12228:102;;;:::i;:::-;;;632:13273;;;;;;;;;;12228:102;632:13273;;;;12228:102;;;-1:-1:-1;12228:102:159;;632:13273;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;12228:102;632:13273;;;-1:-1:-1;;;632:13273:159;;;;;;;11953:23;9192:75;11953:23;;;;;;;;;;1503:4:62;11953:23:159;;632:13273;;;;;12542:28;632:13273;11426:37;632:13273;;;;;;;11426:37;11554:26;632:13273;11284:26;;11554;:::i;:::-;632:13273;;;;2718:98:161;632:13273:159;2718:98:161;;632:13273:159;;;;;;;;;;;;;;;;;10845:39;;632:13273;;;;;10990:33;632:13273;;;;;;;;;;2718:98:161;;;;;;:::i;9192:75:159:-;9066:3;632:13273;9021:13;;;;;;632:13273;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;12228:102;632:13273;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;12228:102;632:13273;;;-1:-1:-1;;;632:13273:159;;;;;;;9036:28;9309:79;9288:156;9036:28;;;;632:13273;;;;;9341:33;9309:79;;:::i;9288:156::-;632:13273;516:66:62;7628:52:64;632:13273:159;1292:93:62;1344:30;;;632:13273:159;1344:30:62;632:13273:159;;1344:30:62;632:13273:159;;;;;;-1:-1:-1;;632:13273:159;;;;;;5399:42;-1:-1:-1;;;;;;;;;;;632:13273:159;5399:42;632:13273;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:13273:159;;;;;;:::o;:::-;;;-1:-1:-1;;;;;632:13273:159;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;:::o;:::-;;;;-1:-1:-1;632:13273:159;;;;;-1:-1:-1;632:13273:159;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:13273:159;;-1:-1:-1;632:13273:159;;-1:-1:-1;632:13273:159;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;-1:-1:-1;632:13273:159;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;632:13273:159;;;;;;;:::o;:::-;;-1:-1:-1;;;;;632:13273:159;;;;;;;:::o;2941:348::-;-1:-1:-1;;;;;;;;;;;632:13273:159;3146:42;;;632:13273;3098:22;;;;;;3271:11;;;;632:13273;2941:348;:::o;3122:3::-;3189:14;;;;;;:::i;:::-;-1:-1:-1;;;;;632:13273:159;-1:-1:-1;632:13273:159;;;;;;;;;;;;;3145:59;3141:110;;632:13273;;3083:13;;3141:110;3224:12;;;;632:13273;3224:12;:::o;632:13273::-;;;;;;;;;;:::o;:::-;-1:-1:-1;;632:13273:159;;;;;;;:::o;:::-;;;;;;;;;;;;3405:215:25;-1:-1:-1;;;;;632:13273:159;3489:22:25;;3485:91;;-1:-1:-1;;;;;;;;;;;632:13273:159;;-1:-1:-1;;;;;;632:13273:159;;;;;;;-1:-1:-1;;;;;632:13273:159;3975:40:25;-1:-1:-1;;3975:40:25;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;632:13273:159;;3509:1:25;3534:31;632:13273:159;;;;;;;;;;:::o;4532:793:161:-;;;;4728:48;4750:25;;;4728:48;:::i;:::-;632:13273:159;;;4851:27:161;;;;632:13273:159;;;4851:27:161;;;;632:13273:159;4851:27:161;;:::i;:::-;2858:45:68;632:13273:159;;;2858:45:68;;4851:27:161;2858:45:68;;632:13273:159;;;;;;4813:4:161;632:13273:159;;;;;;;;;;;;;;;;;;;;2858:45:68;;632:13273:159;;2858:45:68;;;;;;:::i;:::-;632:13273:159;2848:56:68;;632:13273:159;4932:13:161;5111:42;632:13273:159;5111:42:161;;4927:369;4971:3;4947:22;;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;4851:27:161;632:13273:159;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;4851:27:161;632:13273:159;;;:::i;:::-;;;;4851:27:161;632:13273:159;;;;;;;;;4851:27:161;632:13273:159;3915:8:66;632:13273:159;3859:27:66;632:13273:159;;;;;;;;;3859:27:66;;:::i;:::-;3915:8;;;;;:::i;:::-;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;5107:179:161;;4971:3;632:13273:159;;4932:13:161;;5107:179;5188:17;;;;:::i;:::-;:30;;;;5107:179;5184:88;5242:11;;;;;;;632:13273:159;5242:11:161;:::o;4947:22::-;;;;;;;;632:13273:159;4532:793:161;:::o;2658:162:25:-;-1:-1:-1;;;;;;;;;;;632:13273:159;-1:-1:-1;;;;;632:13273:159;966:10:30;2717:23:25;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:25;966:10:30;2763:40:25;632:13273:159;;-1:-1:-1;2763:40:25;9493:887:159;-1:-1:-1;;;;;;;;;;;632:13273:159;;9629:107;632:13273;;9637:38;;9629:107;:::i;:::-;632:13273;-1:-1:-1;632:13273:159;9768:19;;;632:13273;;;;-1:-1:-1;632:13273:159;;;;;;;;;9806:24;9768:62;632:13273;;2935:43:44;10265:33:159;632:13273;;;;;;10119:32;;;632:13273;;;;;;10163:32;;632:13273;;;;;;;;;10163:32;;;;;;:::i;:::-;632:13273;10153:43;;2935::44;;:::i;:::-;10208:37:159;632:13273;;;;;;;-1:-1:-1;632:13273:159;10208:28;;;632:13273;;;;-1:-1:-1;632:13273:159;;10265:33;:35;632:13273;;10265:35;:::i;:::-;632:13273;;;;-1:-1:-1;;;;;632:13273:159;;;;10316:32;;632:13273;;10316:32;9493:887;:::o;632:13273::-;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;3945:169:161;-1:-1:-1;632:13273:159;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;632:13273:159;;;4068:12:161;632:13273:159;;4032:75:161;;632:13273:159;;4090:15:161;632:13273:159;;4032:75:161;;632:13273:159;3945:169:161;:::o;12583:406:159:-;;12687:36;;;632:13273;;;;;12788:13;;12846:42;;;12734:1;12827:3;632:13273;;12803:22;;;;;12687:36;;-1:-1:-1;;;;;12889:14:159;632:13273;12889:14;;:::i;:::-;632:13273;;;;;;;;-1:-1:-1;632:13273:159;;;;;-1:-1:-1;632:13273:159;;;;;;;;;;;12788:13;;12803:22;-1:-1:-1;632:13273:159;;;12803:22;-1:-1:-1;;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;12783:139;632:13273;;;;12734:1;632:13273;;12734:1;632:13273;12734:1;632:13273;;;;;;12583:406;;;;:::o;632:13273::-;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;12687:36;632:13273;;;;;12734:1;632:13273;;;12734:1;632:13273;;;;;;;;;;;;;;;;12734:1;632:13273;;12687:36;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;5331:268:161;632:13273:159;5503:19:161;;;632:13273:159;;;;;;;;;;;;;;;;;;;5579:4:161;632:13273:159;;;;;;;5587:5:161;632:13273:159;;5331:268:161;:::o;2839:340::-;;632:13273:159;;2937:12:161;632:13273:159;2937:12:161;632:13273:159;;;;2920:230:161;2955:5;;;2920:230;-1:-1:-1;632:13273:159;;-1:-1:-1;2839:340:161:o;2962:3::-;2995:12;;3025:11;;;;;-1:-1:-1;2952:1:161;;-1:-1:-1;;3056:11:161:o;3021:119::-;3092:8;3088:52;;632:13273:159;;;;-1:-1:-1;;632:13273:159;;2925:28:161;;3088:52;3120:5;;632:13273:159;;;-1:-1:-1;;;;;632:13273:159;;;;;;:::o;7084:141:26:-;632:13273:159;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;7150:18:26;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:26;;-1:-1:-1;7191:17:26;2129:766:66;632:13273:159;;;2129:766:66;2276:2;2256:22;;2276:2;;2739:25;2539:180;;;;;;;;;;;;;;;-1:-1:-1;2539:180:66;2739:25;;:::i;:::-;2732:32;;;;;:::o;2252:637::-;2795:83;;2811:1;2795:83;2815:35;2795:83;;:::o;7196:532::-;632:13273:159;;;;;;7282:29:66;;;7327:7;;:::o;7278:444::-;632:13273:159;7378:38:66;;632:13273:159;;7439:23:66;;;7291:20;7439:23;632:13273:159;7291:20:66;7439:23;7374:348;7492:35;7483:44;;7492:35;;7550:46;;;;7291:20;7550:46;632:13273:159;;;7291:20:66;7550:46;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;;;7291:20;7679:32;632:13273:159;;;7291:20:66;7679:32;3411:1001:44;3743:569;3411:1001;3743:569;;;;;;;-1:-1:-1;3743:569:44;;;;;;;;-1:-1:-1;3743:569:44;632:13273:159;-1:-1:-1;;;;;632:13273:159;;4325:22:44;4321:85;;3411:1001::o;4321:85::-;4370:25;;;-1:-1:-1;4370:25:44;;-1:-1:-1;4370:25:44;5140:1530:66;;;6199:66;6186:79;;6182:164;;632:13273:159;;;;;;-1:-1:-1;632:13273:159;;;;;;;;;;;;;;;;;;;6457:24:66;;;;;;;;;-1:-1:-1;6457:24:66;-1:-1:-1;;;;;632:13273:159;;6495:20:66;6491:113;;6614:49;-1:-1:-1;6614:49:66;-1:-1:-1;5140:1530:66;:::o;6491:113::-;6531:62;-1:-1:-1;6531:62:66;6457:24;6531:62;-1:-1:-1;6531:62:66;:::o;6182:164::-;6281:54;;;6297:1;6281:54;6301:30;6281:54;;:::o","linkReferences":{}},"methodIdentifiers":{"areValidators(address[])":"8f381dbe","codeState(bytes32)":"c13911e8","codesStates(bytes32[])":"82bdeaad","commitBlocks((bytes32,uint48,bytes32,bytes32,(address,bytes32,address,uint128,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4))[])[])[],bytes[])":"01b1d156","commitCodes((bytes32,bool)[],bytes[])":"e97d3eb3","computeSettings()":"84d22a4f","createProgram(bytes32,bytes32)":"527de0f9","createProgramWithDecoder(address,bytes32,bytes32)":"e7006a74","genesisBlockHash()":"28e24b3d","initialize(address,address,address,address,address[])":"f8453e7c","isValidator(address)":"facd743b","latestCommittedBlockHash()":"c9f16a11","lookupGenesisHash()":"8b1edf1e","mirrorImpl()":"e6fabc09","mirrorProxyImpl()":"65ecfea2","owner()":"8da5cb5b","programCodeId(address)":"9067088e","programsCodeIds(address[])":"baaf0201","programsCount()":"96a2ddfa","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestCodeValidation(bytes32,bytes32)":"1c149d8a","setMirror(address)":"3d43b418","signingThresholdPercentage()":"efd81abc","transferOwnership(address)":"f2fde38b","validatedCodesCount()":"007a32e7","validators()":"ca1e7819","validatorsCount()":"ed612f8c","validatorsThreshold()":"edc87225","wrappedVara()":"88f50cf0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"BlockCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"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\":\"threshold\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"name\":\"ComputationSettingsChanged\",\"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\":\"ValidatorsChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"areValidators\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"}],\"name\":\"codeState\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_codesIds\",\"type\":\"bytes32[]\"}],\"name\":\"codesStates\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState[]\",\"name\":\"\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes32\",\"name\":\"previousCommittedBlock\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"predecessorBlock\",\"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 Gear.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 Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition[]\",\"name\":\"transitions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.BlockCommitment[]\",\"name\":\"_blockCommitments\",\"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 Gear.CodeCommitment[]\",\"name\":\"_codeCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitCodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"computeSettings\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ComputationSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"createProgram\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_decoderImpl\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"createProgramWithDecoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirrorProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wrappedVara\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_validator\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestCommittedBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lookupGenesisHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorImpl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorProxyImpl\",\"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\":\"_programId\",\"type\":\"address\"}],\"name\":\"programCodeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_programsIds\",\"type\":\"address[]\"}],\"name\":\"programsCodeIds\",\"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\":\"address\",\"name\":\"newMirror\",\"type\":\"address\"}],\"name\":\"setMirror\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signingThresholdPercentage\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatedCodesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"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\":{\"BlockCommitted(bytes32)\":{\"details\":\"This is an *informational* event, signaling that the block outcome has been committed.\",\"params\":{\"hash\":\"The block hash that was \\\"finalized\\\" in relation to the necessary transitions.\"}},\"CodeGotValidated(bytes32,bool)\":{\"details\":\"This is an *informational* event, signaling the results of code validation.\",\"params\":{\"codeId\":\"The ID of the code that was validated.\",\"valid\":\"The result of the validation: indicates whether the code ID can be used for program creation.\"}},\"CodeValidationRequested(bytes32,bytes32)\":{\"details\":\"This is a *requesting* event, signaling that validators need to download and validate the code from the transaction blob.\",\"params\":{\"blobTxHash\":\"The transaction hash that contains the WASM blob. Set to zero if applied to the current transaction.\",\"codeId\":\"The expected code ID of the applied WASM blob, represented as a Blake2 hash.\"}},\"ComputationSettingsChanged(uint64,uint128)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to change the computation settings. Users and program authors may want to adjust their practices, while validators need to apply the changes internally starting from the next block.\",\"params\":{\"threshold\":\"The amount of Gear gas initially allocated for free to allow the program to decide if it wants to process the incoming message.\",\"wvaraPerSecond\":\"The amount of WVara to be charged from the program's execution balance per second of computation.\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"ProgramCreated(address,bytes32)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling the creation of a new program and its Ethereum mirror. Validators need to initialize it with a zeroed hash state internally.\",\"params\":{\"actorId\":\"ID of the actor that was created. It is accessible inside the co-processor and on Ethereum by this identifier.\",\"codeId\":\"The code ID of the WASM implementation of the created program.\"}},\"StorageSlotChanged()\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to wipe the router state, rendering all previously existing codes and programs ineligible. Validators need to wipe their databases immediately.\"},\"ValidatorsChanged()\":{\"details\":\"This is an *informational* event, signaling that only new validators are now able to pass commitment signing verification.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"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\":{\"events\":{\"BlockCommitted(bytes32)\":{\"notice\":\"Emitted when all necessary state transitions have been applied and states have changed.\"},\"CodeGotValidated(bytes32,bool)\":{\"notice\":\"Emitted when a code, previously requested for validation, receives validation results, so its CodeStatus changed.\"},\"CodeValidationRequested(bytes32,bytes32)\":{\"notice\":\"Emitted when a new code validation request is submitted.\"},\"ComputationSettingsChanged(uint64,uint128)\":{\"notice\":\"Emitted when the computation settings have been changed.\"},\"ProgramCreated(address,bytes32)\":{\"notice\":\"Emitted when a new program within the co-processor is created and is now available on-chain.\"},\"StorageSlotChanged()\":{\"notice\":\"Emitted when the router's storage slot has been changed.\"},\"ValidatorsChanged()\":{\"notice\":\"Emitted when the election mechanism forces the validator set to be changed.\"}},\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"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\":\"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6\",\"dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm\"]},\"src/IMirrorDecoder.sol\":{\"keccak256\":\"0x95bfe42461bd03e726f894679f4b4133034a405672fe8343c3343d0964cf9072\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a0907d84596ed62b9ea222fd841fc0259e87b17dd0b5af3f6d0d8a8f4726994d\",\"dweb:/ipfs/QmTkumKh7DBJNXrark6NBqBxCtnYmbRMGYkRyxxzpW9wKr\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17\",\"dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Router.sol\":{\"keccak256\":\"0x098f1f85d1d0e06e941a21185d66c71f3b3ed9b32e3eb397f1f2675690d36a85\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://adb2450142d1c647273e63863755943f46e42ad13817ababcd29526dc218cc72\",\"dweb:/ipfs/QmdUvHEPWzcWLY99cK9X14uuthML4ESjJ4WKqMYXuXF7De\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec\",\"dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"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":"bytes32","name":"hash","type":"bytes32","indexed":false}],"type":"event","name":"BlockCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","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":"threshold","type":"uint64","indexed":false},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128","indexed":false}],"type":"event","name":"ComputationSettingsChanged","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":"ValidatorsChanged","anonymous":false},{"inputs":[{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"view","type":"function","name":"areValidators","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"codeState","outputs":[{"internalType":"enum Gear.CodeState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32[]","name":"_codesIds","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"codesStates","outputs":[{"internalType":"enum Gear.CodeState[]","name":"","type":"uint8[]"}]},{"inputs":[{"internalType":"struct Gear.BlockCommitment[]","name":"_blockCommitments","type":"tuple[]","components":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes32","name":"previousCommittedBlock","type":"bytes32"},{"internalType":"bytes32","name":"predecessorBlock","type":"bytes32"},{"internalType":"struct Gear.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 Gear.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 Gear.Message[]","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 Gear.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 Gear.CodeCommitment[]","name":"_codeCommitments","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":[],"stateMutability":"view","type":"function","name":"computeSettings","outputs":[{"internalType":"struct Gear.ComputationSettings","name":"","type":"tuple","components":[{"internalType":"uint64","name":"threshold","type":"uint64"},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128"}]}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgram","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_decoderImpl","type":"address"},{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgramWithDecoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_mirror","type":"address"},{"internalType":"address","name":"_mirrorProxy","type":"address"},{"internalType":"address","name":"_wrappedVara","type":"address"},{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"_validator","type":"address"}],"stateMutability":"view","type":"function","name":"isValidator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"latestCommittedBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"lookupGenesisHash"},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorImpl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorProxyImpl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_programId","type":"address"}],"stateMutability":"view","type":"function","name":"programCodeId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"_programsIds","type":"address[]"}],"stateMutability":"view","type":"function","name":"programsCodeIds","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":"address","name":"newMirror","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMirror"},{"inputs":[],"stateMutability":"view","type":"function","name":"signingThresholdPercentage","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"validatedCodesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"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":"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."},"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/","symbiotic-core/=lib/symbiotic-core/"],"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":"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e","urls":["bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6","dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm"],"license":"UNLICENSED"},"src/IMirrorDecoder.sol":{"keccak256":"0x95bfe42461bd03e726f894679f4b4133034a405672fe8343c3343d0964cf9072","urls":["bzz-raw://a0907d84596ed62b9ea222fd841fc0259e87b17dd0b5af3f6d0d8a8f4726994d","dweb:/ipfs/QmTkumKh7DBJNXrark6NBqBxCtnYmbRMGYkRyxxzpW9wKr"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8","urls":["bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17","dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Router.sol":{"keccak256":"0x098f1f85d1d0e06e941a21185d66c71f3b3ed9b32e3eb397f1f2675690d36a85","urls":["bzz-raw://adb2450142d1c647273e63863755943f46e42ad13817ababcd29526dc218cc72","dweb:/ipfs/QmdUvHEPWzcWLY99cK9X14uuthML4ESjJ4WKqMYXuXF7De"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc","urls":["bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec","dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/Router.sol","id":76725,"exportedSymbols":{"Clones":[41840],"Gear":[77275],"IMirror":[73559],"IMirrorDecoder":[73594],"IRouter":[73844],"IWrappedVara":[73855],"OwnableUpgradeable":[39387],"ReentrancyGuardTransient":[44045],"Router":[76724],"StorageSlot":[44581]},"nodeType":"SourceUnit","src":"39:13867:159","nodes":[{"id":75371,"nodeType":"PragmaDirective","src":"39:24:159","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":75373,"nodeType":"ImportDirective","src":"65:64:159","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":41841,"symbolAliases":[{"foreign":{"id":75372,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41840,"src":"73:6:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75375,"nodeType":"ImportDirective","src":"130:42:159","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"./libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":77276,"symbolAliases":[{"foreign":{"id":75374,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"138:4:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75377,"nodeType":"ImportDirective","src":"173:38:159","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":73560,"symbolAliases":[{"foreign":{"id":75376,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73559,"src":"181:7:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75379,"nodeType":"ImportDirective","src":"212:52:159","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":73595,"symbolAliases":[{"foreign":{"id":75378,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73594,"src":"220:14:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75381,"nodeType":"ImportDirective","src":"265:38:159","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":73845,"symbolAliases":[{"foreign":{"id":75380,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73844,"src":"273:7:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75383,"nodeType":"ImportDirective","src":"304:48:159","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":73856,"symbolAliases":[{"foreign":{"id":75382,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73855,"src":"312:12:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75385,"nodeType":"ImportDirective","src":"353:101:159","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":39388,"symbolAliases":[{"foreign":{"id":75384,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39387,"src":"361:18:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75387,"nodeType":"ImportDirective","src":"455:100:159","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":44046,"symbolAliases":[{"foreign":{"id":75386,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44045,"src":"463:24:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75389,"nodeType":"ImportDirective","src":"556:74:159","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":44582,"symbolAliases":[{"foreign":{"id":75388,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44581,"src":"564:11:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76724,"nodeType":"ContractDefinition","src":"632:13273:159","nodes":[{"id":75398,"nodeType":"VariableDeclaration","src":"813:106:159","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"838:12:159","scope":76724,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75396,"name":"bytes32","nodeType":"ElementaryTypeName","src":"813:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835633039636131623962383132376134666439663363333834616163353962363631343431653832306531373733333735336666356632653836653165303030","id":75397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"853:66:159","typeDescriptions":{"typeIdentifier":"t_rational_41630078590300661333111585883568696735413380457407274925697692750148467286016_by_1","typeString":"int_const 4163...(69 digits omitted)...6016"},"value":"0x5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000"},"visibility":"private"},{"id":75406,"nodeType":"FunctionDefinition","src":"979:53:159","nodes":[],"body":{"id":75405,"nodeType":"Block","src":"993:39:159","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75402,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39609,"src":"1003:20:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":75403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1003:22:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75404,"nodeType":"ExpressionStatement","src":"1003:22:159"}]},"documentation":{"id":75399,"nodeType":"StructuredDocumentation","src":"926:48:159","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":75400,"nodeType":"ParameterList","parameters":[],"src":"990:2:159"},"returnParameters":{"id":75401,"nodeType":"ParameterList","parameters":[],"src":"993:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75478,"nodeType":"FunctionDefinition","src":"1038:677:159","nodes":[],"body":{"id":75477,"nodeType":"Block","src":"1232:483:159","nodes":[],"statements":[{"expression":{"arguments":[{"id":75423,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75408,"src":"1257:6:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75422,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39247,"src":"1242:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":75424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1242:22:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75425,"nodeType":"ExpressionStatement","src":"1242:22:159"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725631","id":75427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1291:25:159","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":75426,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76723,"src":"1275:15:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":75428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1275:42:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75429,"nodeType":"ExpressionStatement","src":"1275:42:159"},{"assignments":[75432],"declarations":[{"constant":false,"id":75432,"mutability":"mutable","name":"router","nameLocation":"1343:6:159","nodeType":"VariableDeclaration","scope":75477,"src":"1327:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75431,"nodeType":"UserDefinedTypeName","pathNode":{"id":75430,"name":"Storage","nameLocations":["1327:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"1327:7:159"},"referencedDeclaration":73633,"src":"1327:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75435,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75433,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"1352:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1352:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1327:34:159"},{"expression":{"id":75442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75436,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75432,"src":"1372:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75438,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1379:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"1372:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75439,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"1394:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1399:10:159","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":77120,"src":"1394:15:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$76900_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":75441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1394:17:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"1372:39:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75443,"nodeType":"ExpressionStatement","src":"1372:39:159"},{"expression":{"id":75453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75444,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75432,"src":"1421:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75446,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1428:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"1421:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":75449,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75410,"src":"1461:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75450,"name":"_mirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75412,"src":"1470:12:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75451,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75414,"src":"1484:12:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":75447,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"1444:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1449:11:159","memberName":"AddressBook","nodeType":"MemberAccess","referencedDeclaration":76861,"src":"1444:16:159","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddressBook_$76861_storage_ptr_$","typeString":"type(struct Gear.AddressBook storage pointer)"}},"id":75452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1444:53:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_memory_ptr","typeString":"struct Gear.AddressBook memory"}},"src":"1421:76:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75454,"nodeType":"ExpressionStatement","src":"1421:76:159"},{"expression":{"id":75462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":75455,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75432,"src":"1507:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75458,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1514:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"1507:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75459,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1533:26:159","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":76950,"src":"1507:52:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75460,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"1562:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75461,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1567:28:159","memberName":"SIGNING_THRESHOLD_PERCENTAGE","nodeType":"MemberAccess","referencedDeclaration":76851,"src":"1562:33:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"1507:88:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":75463,"nodeType":"ExpressionStatement","src":"1507:88:159"},{"expression":{"arguments":[{"id":75465,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75432,"src":"1620:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":75466,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75417,"src":"1628:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"id":75464,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76615,"src":"1605:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$73633_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IRouter.Storage storage pointer,address[] memory)"}},"id":75467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1605:35:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75468,"nodeType":"ExpressionStatement","src":"1605:35:159"},{"expression":{"id":75475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75469,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75432,"src":"1650:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75471,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1657:15:159","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":73628,"src":"1650:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75472,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"1675:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1680:26:159","memberName":"defaultComputationSettings","nodeType":"MemberAccess","referencedDeclaration":77067,"src":"1675:31:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ComputationSettings_$76893_memory_ptr_$","typeString":"function () pure returns (struct Gear.ComputationSettings memory)"}},"id":75474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1675:33:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_memory_ptr","typeString":"struct Gear.ComputationSettings memory"}},"src":"1650:58:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":75476,"nodeType":"ExpressionStatement","src":"1650:58:159"}]},"functionSelector":"f8453e7c","implemented":true,"kind":"function","modifiers":[{"id":75420,"kind":"modifierInvocation","modifierName":{"id":75419,"name":"initializer","nameLocations":["1220:11:159"],"nodeType":"IdentifierPath","referencedDeclaration":39495,"src":"1220:11:159"},"nodeType":"ModifierInvocation","src":"1220:11:159"}],"name":"initialize","nameLocation":"1047:10:159","parameters":{"id":75418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75408,"mutability":"mutable","name":"_owner","nameLocation":"1075:6:159","nodeType":"VariableDeclaration","scope":75478,"src":"1067:14:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75407,"name":"address","nodeType":"ElementaryTypeName","src":"1067:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75410,"mutability":"mutable","name":"_mirror","nameLocation":"1099:7:159","nodeType":"VariableDeclaration","scope":75478,"src":"1091:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75409,"name":"address","nodeType":"ElementaryTypeName","src":"1091:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75412,"mutability":"mutable","name":"_mirrorProxy","nameLocation":"1124:12:159","nodeType":"VariableDeclaration","scope":75478,"src":"1116:20:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75411,"name":"address","nodeType":"ElementaryTypeName","src":"1116:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75414,"mutability":"mutable","name":"_wrappedVara","nameLocation":"1154:12:159","nodeType":"VariableDeclaration","scope":75478,"src":"1146:20:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75413,"name":"address","nodeType":"ElementaryTypeName","src":"1146:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75417,"mutability":"mutable","name":"_validators","nameLocation":"1195:11:159","nodeType":"VariableDeclaration","scope":75478,"src":"1176:30:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":75415,"name":"address","nodeType":"ElementaryTypeName","src":"1176:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75416,"nodeType":"ArrayTypeName","src":"1176:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1057:155:159"},"returnParameters":{"id":75421,"nodeType":"ParameterList","parameters":[],"src":"1232:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75542,"nodeType":"FunctionDefinition","src":"1721:600:159","nodes":[],"body":{"id":75541,"nodeType":"Block","src":"1779:542:159","nodes":[],"statements":[{"assignments":[75488],"declarations":[{"constant":false,"id":75488,"mutability":"mutable","name":"oldRouter","nameLocation":"1805:9:159","nodeType":"VariableDeclaration","scope":75541,"src":"1789:25:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75487,"nodeType":"UserDefinedTypeName","pathNode":{"id":75486,"name":"Storage","nameLocations":["1789:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"1789:7:159"},"referencedDeclaration":73633,"src":"1789:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75491,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75489,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"1817:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1817:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1789:37:159"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725632","id":75493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1853:25:159","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":75492,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76723,"src":"1837:15:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":75494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:42:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75495,"nodeType":"ExpressionStatement","src":"1837:42:159"},{"assignments":[75498],"declarations":[{"constant":false,"id":75498,"mutability":"mutable","name":"newRouter","nameLocation":"1905:9:159","nodeType":"VariableDeclaration","scope":75541,"src":"1889:25:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75497,"nodeType":"UserDefinedTypeName","pathNode":{"id":75496,"name":"Storage","nameLocations":["1889:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"1889:7:159"},"referencedDeclaration":73633,"src":"1889:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75501,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75499,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"1917:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1917:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1889:37:159"},{"expression":{"id":75508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75502,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75498,"src":"1937:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75504,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1947:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"1937:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75505,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"1962:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1967:10:159","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":77120,"src":"1962:15:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$76900_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":75507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1962:17:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"1937:42:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75509,"nodeType":"ExpressionStatement","src":"1937:42:159"},{"expression":{"id":75515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75510,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75498,"src":"1989:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75512,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1999:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"1989:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75513,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75488,"src":"2015:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75514,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2025:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"2015:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"src":"1989:49:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75516,"nodeType":"ExpressionStatement","src":"1989:49:159"},{"expression":{"id":75525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":75517,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75498,"src":"2049:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75520,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2059:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"2049:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75521,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2078:26:159","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":76950,"src":"2049:55:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":75522,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75488,"src":"2119:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75523,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2129:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"2119:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75524,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2148:26:159","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":76950,"src":"2119:55:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2049:125:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":75526,"nodeType":"ExpressionStatement","src":"2049:125:159"},{"expression":{"arguments":[{"id":75528,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75498,"src":"2199:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"expression":{"id":75529,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75488,"src":"2210:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2220:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"2210:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75531,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2239:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"2210:39:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"id":75527,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76615,"src":"2184:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$73633_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IRouter.Storage storage pointer,address[] memory)"}},"id":75532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2184:66:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75533,"nodeType":"ExpressionStatement","src":"2184:66:159"},{"expression":{"id":75539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75534,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75498,"src":"2261:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75536,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2271:15:159","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":73628,"src":"2261:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75537,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75488,"src":"2289:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2299:15:159","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":73628,"src":"2289:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"src":"2261:53:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":75540,"nodeType":"ExpressionStatement","src":"2261:53:159"}]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":75481,"kind":"modifierInvocation","modifierName":{"id":75480,"name":"onlyOwner","nameLocations":["1752:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":39282,"src":"1752:9:159"},"nodeType":"ModifierInvocation","src":"1752:9:159"},{"arguments":[{"hexValue":"32","id":75483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1776:1:159","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":75484,"kind":"modifierInvocation","modifierName":{"id":75482,"name":"reinitializer","nameLocations":["1762:13:159"],"nodeType":"IdentifierPath","referencedDeclaration":39542,"src":"1762:13:159"},"nodeType":"ModifierInvocation","src":"1762:16:159"}],"name":"reinitialize","nameLocation":"1730:12:159","parameters":{"id":75479,"nodeType":"ParameterList","parameters":[],"src":"1742:2:159"},"returnParameters":{"id":75485,"nodeType":"ParameterList","parameters":[],"src":"1779:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75553,"nodeType":"FunctionDefinition","src":"2343:109:159","nodes":[],"body":{"id":75552,"nodeType":"Block","src":"2401:51:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75547,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"2418:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2418:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75549,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2428:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"2418:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75550,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2441:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76895,"src":"2418:27:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75546,"id":75551,"nodeType":"Return","src":"2411:34:159"}]},"baseFunctions":[73677],"functionSelector":"28e24b3d","implemented":true,"kind":"function","modifiers":[],"name":"genesisBlockHash","nameLocation":"2352:16:159","parameters":{"id":75543,"nodeType":"ParameterList","parameters":[],"src":"2368:2:159"},"returnParameters":{"id":75546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75545,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75553,"src":"2392:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75544,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2392:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2391:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75564,"nodeType":"FunctionDefinition","src":"2458:125:159","nodes":[],"body":{"id":75563,"nodeType":"Block","src":"2524:59:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75558,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"2541:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2541:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2551:20:159","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":73616,"src":"2541:30:159","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$76888_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":75561,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2572:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76885,"src":"2541:35:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75557,"id":75562,"nodeType":"Return","src":"2534:42:159"}]},"baseFunctions":[73682],"functionSelector":"c9f16a11","implemented":true,"kind":"function","modifiers":[],"name":"latestCommittedBlockHash","nameLocation":"2467:24:159","parameters":{"id":75554,"nodeType":"ParameterList","parameters":[],"src":"2491:2:159"},"returnParameters":{"id":75557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75556,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75564,"src":"2515:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75555,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2515:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2514:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75575,"nodeType":"FunctionDefinition","src":"2589:106:159","nodes":[],"body":{"id":75574,"nodeType":"Block","src":"2641:54:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75569,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"2658:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2658:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75571,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2668:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"2658:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75572,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2682:6:159","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":76856,"src":"2658:30:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75568,"id":75573,"nodeType":"Return","src":"2651:37:159"}]},"baseFunctions":[73687],"functionSelector":"e6fabc09","implemented":true,"kind":"function","modifiers":[],"name":"mirrorImpl","nameLocation":"2598:10:159","parameters":{"id":75565,"nodeType":"ParameterList","parameters":[],"src":"2608:2:159"},"returnParameters":{"id":75568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75567,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75575,"src":"2632:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75566,"name":"address","nodeType":"ElementaryTypeName","src":"2632:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2631:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75586,"nodeType":"FunctionDefinition","src":"2701:116:159","nodes":[],"body":{"id":75585,"nodeType":"Block","src":"2758:59:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75580,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"2775:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2775:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75582,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2785:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"2775:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75583,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2799:11:159","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":76858,"src":"2775:35:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75579,"id":75584,"nodeType":"Return","src":"2768:42:159"}]},"baseFunctions":[73692],"functionSelector":"65ecfea2","implemented":true,"kind":"function","modifiers":[],"name":"mirrorProxyImpl","nameLocation":"2710:15:159","parameters":{"id":75576,"nodeType":"ParameterList","parameters":[],"src":"2725:2:159"},"returnParameters":{"id":75579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75578,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75586,"src":"2749:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75577,"name":"address","nodeType":"ElementaryTypeName","src":"2749:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2748:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75597,"nodeType":"FunctionDefinition","src":"2823:112:159","nodes":[],"body":{"id":75596,"nodeType":"Block","src":"2876:59:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75591,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"2893:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2893:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75593,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2903:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"2893:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75594,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2917:11:159","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":76860,"src":"2893:35:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75590,"id":75595,"nodeType":"Return","src":"2886:42:159"}]},"baseFunctions":[73697],"functionSelector":"88f50cf0","implemented":true,"kind":"function","modifiers":[],"name":"wrappedVara","nameLocation":"2832:11:159","parameters":{"id":75587,"nodeType":"ParameterList","parameters":[],"src":"2843:2:159"},"returnParameters":{"id":75590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75589,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75597,"src":"2867:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75588,"name":"address","nodeType":"ElementaryTypeName","src":"2867:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2866:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75639,"nodeType":"FunctionDefinition","src":"2941:348:159","nodes":[],"body":{"id":75638,"nodeType":"Block","src":"3023:266:159","nodes":[],"statements":[{"assignments":[75607],"declarations":[{"constant":false,"id":75607,"mutability":"mutable","name":"router","nameLocation":"3049:6:159","nodeType":"VariableDeclaration","scope":75638,"src":"3033:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75606,"nodeType":"UserDefinedTypeName","pathNode":{"id":75605,"name":"Storage","nameLocations":["3033:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"3033:7:159"},"referencedDeclaration":73633,"src":"3033:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75610,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75608,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"3058:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3058:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3033:34:159"},{"body":{"id":75634,"nodeType":"Block","src":"3127:134:159","statements":[{"condition":{"id":75629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3145:59:159","subExpression":{"baseExpression":{"expression":{"expression":{"id":75622,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75607,"src":"3146:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75623,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3153:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"3146:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75624,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3172:16:159","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":76957,"src":"3146:42:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":75628,"indexExpression":{"baseExpression":{"id":75625,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75600,"src":"3189:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":75627,"indexExpression":{"id":75626,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75612,"src":"3201:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3189:14:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3146:58:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75633,"nodeType":"IfStatement","src":"3141:110:159","trueBody":{"id":75632,"nodeType":"Block","src":"3206:45:159","statements":[{"expression":{"hexValue":"66616c7365","id":75630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3231:5:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":75604,"id":75631,"nodeType":"Return","src":"3224:12:159"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75615,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75612,"src":"3098:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":75616,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75600,"src":"3102:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":75617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3114:6:159","memberName":"length","nodeType":"MemberAccess","src":"3102:18:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3098:22:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75635,"initializationExpression":{"assignments":[75612],"declarations":[{"constant":false,"id":75612,"mutability":"mutable","name":"i","nameLocation":"3091:1:159","nodeType":"VariableDeclaration","scope":75635,"src":"3083:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75611,"name":"uint256","nodeType":"ElementaryTypeName","src":"3083:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75614,"initialValue":{"hexValue":"30","id":75613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3095:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3083:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3122:3:159","subExpression":{"id":75619,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75612,"src":"3122:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75621,"nodeType":"ExpressionStatement","src":"3122:3:159"},"nodeType":"ForStatement","src":"3078:183:159"},{"expression":{"hexValue":"74727565","id":75636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3278:4:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":75604,"id":75637,"nodeType":"Return","src":"3271:11:159"}]},"baseFunctions":[73705],"functionSelector":"8f381dbe","implemented":true,"kind":"function","modifiers":[],"name":"areValidators","nameLocation":"2950:13:159","parameters":{"id":75601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75600,"mutability":"mutable","name":"_validators","nameLocation":"2983:11:159","nodeType":"VariableDeclaration","scope":75639,"src":"2964:30:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":75598,"name":"address","nodeType":"ElementaryTypeName","src":"2964:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75599,"nodeType":"ArrayTypeName","src":"2964:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2963:32:159"},"returnParameters":{"id":75604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75639,"src":"3017:4:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75602,"name":"bool","nodeType":"ElementaryTypeName","src":"3017:4:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3016:6:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75654,"nodeType":"FunctionDefinition","src":"3295:149:159","nodes":[],"body":{"id":75653,"nodeType":"Block","src":"3363:81:159","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75646,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"3380:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3380:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75648,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3390:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"3380:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75649,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3409:16:159","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":76957,"src":"3380:45:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":75651,"indexExpression":{"id":75650,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75641,"src":"3426:10:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3380:57:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":75645,"id":75652,"nodeType":"Return","src":"3373:64:159"}]},"baseFunctions":[73712],"functionSelector":"facd743b","implemented":true,"kind":"function","modifiers":[],"name":"isValidator","nameLocation":"3304:11:159","parameters":{"id":75642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75641,"mutability":"mutable","name":"_validator","nameLocation":"3324:10:159","nodeType":"VariableDeclaration","scope":75654,"src":"3316:18:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75640,"name":"address","nodeType":"ElementaryTypeName","src":"3316:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3315:20:159"},"returnParameters":{"id":75645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75644,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75654,"src":"3357:4:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75643,"name":"bool","nodeType":"ElementaryTypeName","src":"3357:4:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3356:6:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75665,"nodeType":"FunctionDefinition","src":"3450:146:159","nodes":[],"body":{"id":75664,"nodeType":"Block","src":"3517:79:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75659,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"3534:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3534:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75661,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3544:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"3534:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75662,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3563:26:159","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":76950,"src":"3534:55:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":75658,"id":75663,"nodeType":"Return","src":"3527:62:159"}]},"baseFunctions":[73717],"functionSelector":"efd81abc","implemented":true,"kind":"function","modifiers":[],"name":"signingThresholdPercentage","nameLocation":"3459:26:159","parameters":{"id":75655,"nodeType":"ParameterList","parameters":[],"src":"3485:2:159"},"returnParameters":{"id":75658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75657,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75665,"src":"3509:6:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":75656,"name":"uint16","nodeType":"ElementaryTypeName","src":"3509:6:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"3508:8:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75677,"nodeType":"FunctionDefinition","src":"3602:124:159","nodes":[],"body":{"id":75676,"nodeType":"Block","src":"3663:63:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75671,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"3680:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3680:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75673,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3690:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"3680:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75674,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3709:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"3680:39:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":75670,"id":75675,"nodeType":"Return","src":"3673:46:159"}]},"baseFunctions":[73723],"functionSelector":"ca1e7819","implemented":true,"kind":"function","modifiers":[],"name":"validators","nameLocation":"3611:10:159","parameters":{"id":75666,"nodeType":"ParameterList","parameters":[],"src":"3621:2:159"},"returnParameters":{"id":75670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75669,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75677,"src":"3645:16:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":75667,"name":"address","nodeType":"ElementaryTypeName","src":"3645:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75668,"nodeType":"ArrayTypeName","src":"3645:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3644:18:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75689,"nodeType":"FunctionDefinition","src":"3732:127:159","nodes":[],"body":{"id":75688,"nodeType":"Block","src":"3789:70:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75682,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"3806:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3806:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75684,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3816:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"3806:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75685,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3835:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"3806:39:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":75686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3846:6:159","memberName":"length","nodeType":"MemberAccess","src":"3806:46:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75681,"id":75687,"nodeType":"Return","src":"3799:53:159"}]},"baseFunctions":[73728],"functionSelector":"ed612f8c","implemented":true,"kind":"function","modifiers":[],"name":"validatorsCount","nameLocation":"3741:15:159","parameters":{"id":75678,"nodeType":"ParameterList","parameters":[],"src":"3756:2:159"},"returnParameters":{"id":75681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75689,"src":"3780:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75679,"name":"uint256","nodeType":"ElementaryTypeName","src":"3780:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3779:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75702,"nodeType":"FunctionDefinition","src":"3865:141:159","nodes":[],"body":{"id":75701,"nodeType":"Block","src":"3926:80:159","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75696,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"3970:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3970:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75698,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3980:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"3970:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}],"expression":{"id":75694,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"3943:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3948:21:159","memberName":"validatorsThresholdOf","nodeType":"MemberAccess","referencedDeclaration":77255,"src":"3943:26:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_ValidationSettings_$76958_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct Gear.ValidationSettings storage pointer) view returns (uint256)"}},"id":75699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3943:56:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75693,"id":75700,"nodeType":"Return","src":"3936:63:159"}]},"baseFunctions":[73733],"functionSelector":"edc87225","implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"3874:19:159","parameters":{"id":75690,"nodeType":"ParameterList","parameters":[],"src":"3893:2:159"},"returnParameters":{"id":75693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75692,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75702,"src":"3917:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75691,"name":"uint256","nodeType":"ElementaryTypeName","src":"3917:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3916:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75713,"nodeType":"FunctionDefinition","src":"4012:130:159","nodes":[],"body":{"id":75712,"nodeType":"Block","src":"4093:49:159","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75708,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"4110:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4110:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75710,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4120:15:159","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":73628,"src":"4110:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"functionReturnParameters":75707,"id":75711,"nodeType":"Return","src":"4103:32:159"}]},"baseFunctions":[73739],"functionSelector":"84d22a4f","implemented":true,"kind":"function","modifiers":[],"name":"computeSettings","nameLocation":"4021:15:159","parameters":{"id":75703,"nodeType":"ParameterList","parameters":[],"src":"4036:2:159"},"returnParameters":{"id":75707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75706,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75713,"src":"4060:31:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_memory_ptr","typeString":"struct Gear.ComputationSettings"},"typeName":{"id":75705,"nodeType":"UserDefinedTypeName","pathNode":{"id":75704,"name":"Gear.ComputationSettings","nameLocations":["4060:4:159","4065:19:159"],"nodeType":"IdentifierPath","referencedDeclaration":76893,"src":"4060:24:159"},"referencedDeclaration":76893,"src":"4060:24:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_storage_ptr","typeString":"struct Gear.ComputationSettings"}},"visibility":"internal"}],"src":"4059:33:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75729,"nodeType":"FunctionDefinition","src":"4148:134:159","nodes":[],"body":{"id":75728,"nodeType":"Block","src":"4221:61:159","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75721,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"4238:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4238:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75723,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4248:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"4238:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75724,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4261:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"4238:28:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":75726,"indexExpression":{"id":75725,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75715,"src":"4267:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4238:37:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"functionReturnParameters":75720,"id":75727,"nodeType":"Return","src":"4231:44:159"}]},"baseFunctions":[73747],"functionSelector":"c13911e8","implemented":true,"kind":"function","modifiers":[],"name":"codeState","nameLocation":"4157:9:159","parameters":{"id":75716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75715,"mutability":"mutable","name":"_codeId","nameLocation":"4175:7:159","nodeType":"VariableDeclaration","scope":75729,"src":"4167:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75714,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4167:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4166:17:159"},"returnParameters":{"id":75720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75719,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75729,"src":"4205:14:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"},"typeName":{"id":75718,"nodeType":"UserDefinedTypeName","pathNode":{"id":75717,"name":"Gear.CodeState","nameLocations":["4205:4:159","4210:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":76883,"src":"4205:14:159"},"referencedDeclaration":76883,"src":"4205:14:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"visibility":"internal"}],"src":"4204:16:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75787,"nodeType":"FunctionDefinition","src":"4288:378:159","nodes":[],"body":{"id":75786,"nodeType":"Block","src":"4385:281:159","nodes":[],"statements":[{"assignments":[75741],"declarations":[{"constant":false,"id":75741,"mutability":"mutable","name":"router","nameLocation":"4411:6:159","nodeType":"VariableDeclaration","scope":75786,"src":"4395:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75740,"nodeType":"UserDefinedTypeName","pathNode":{"id":75739,"name":"Storage","nameLocations":["4395:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"4395:7:159"},"referencedDeclaration":73633,"src":"4395:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75744,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75742,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"4420:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4420:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4395:34:159"},{"assignments":[75750],"declarations":[{"constant":false,"id":75750,"mutability":"mutable","name":"res","nameLocation":"4464:3:159","nodeType":"VariableDeclaration","scope":75786,"src":"4440:27:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":75748,"nodeType":"UserDefinedTypeName","pathNode":{"id":75747,"name":"Gear.CodeState","nameLocations":["4440:4:159","4445:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":76883,"src":"4440:14:159"},"referencedDeclaration":76883,"src":"4440:14:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"id":75749,"nodeType":"ArrayTypeName","src":"4440:16:159","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"id":75758,"initialValue":{"arguments":[{"expression":{"id":75755,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75732,"src":"4491:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":75756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4501:6:159","memberName":"length","nodeType":"MemberAccess","src":"4491:16:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4470:20:159","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_enum$_CodeState_$76883_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (enum Gear.CodeState[] memory)"},"typeName":{"baseType":{"id":75752,"nodeType":"UserDefinedTypeName","pathNode":{"id":75751,"name":"Gear.CodeState","nameLocations":["4474:4:159","4479:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":76883,"src":"4474:14:159"},"referencedDeclaration":76883,"src":"4474:14:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"id":75753,"nodeType":"ArrayTypeName","src":"4474:16:159","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}}},"id":75757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4470:38:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4440:68:159"},{"body":{"id":75782,"nodeType":"Block","src":"4566:73:159","statements":[{"expression":{"id":75780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75770,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75750,"src":"4580:3:159","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"id":75772,"indexExpression":{"id":75771,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75760,"src":"4584:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4580:6:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":75773,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75741,"src":"4589:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75774,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4596:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"4589:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75775,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4609:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"4589:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":75779,"indexExpression":{"baseExpression":{"id":75776,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75732,"src":"4615:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":75778,"indexExpression":{"id":75777,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75760,"src":"4625:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4615:12:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4589:39:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"src":"4580:48:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"id":75781,"nodeType":"ExpressionStatement","src":"4580:48:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75763,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75760,"src":"4539:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":75764,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75732,"src":"4543:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":75765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4553:6:159","memberName":"length","nodeType":"MemberAccess","src":"4543:16:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4539:20:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75783,"initializationExpression":{"assignments":[75760],"declarations":[{"constant":false,"id":75760,"mutability":"mutable","name":"i","nameLocation":"4532:1:159","nodeType":"VariableDeclaration","scope":75783,"src":"4524:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75759,"name":"uint256","nodeType":"ElementaryTypeName","src":"4524:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75762,"initialValue":{"hexValue":"30","id":75761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4536:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4524:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4561:3:159","subExpression":{"id":75767,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75760,"src":"4561:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75769,"nodeType":"ExpressionStatement","src":"4561:3:159"},"nodeType":"ForStatement","src":"4519:120:159"},{"expression":{"id":75784,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75750,"src":"4656:3:159","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"functionReturnParameters":75738,"id":75785,"nodeType":"Return","src":"4649:10:159"}]},"baseFunctions":[73757],"functionSelector":"82bdeaad","implemented":true,"kind":"function","modifiers":[],"name":"codesStates","nameLocation":"4297:11:159","parameters":{"id":75733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75732,"mutability":"mutable","name":"_codesIds","nameLocation":"4328:9:159","nodeType":"VariableDeclaration","scope":75787,"src":"4309:28:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":75730,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4309:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75731,"nodeType":"ArrayTypeName","src":"4309:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"4308:30:159"},"returnParameters":{"id":75738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75737,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75787,"src":"4360:23:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":75735,"nodeType":"UserDefinedTypeName","pathNode":{"id":75734,"name":"Gear.CodeState","nameLocations":["4360:4:159","4365:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":76883,"src":"4360:14:159"},"referencedDeclaration":76883,"src":"4360:14:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"id":75736,"nodeType":"ArrayTypeName","src":"4360:16:159","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"src":"4359:25:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75802,"nodeType":"FunctionDefinition","src":"4672:140:159","nodes":[],"body":{"id":75801,"nodeType":"Block","src":"4745:67:159","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75794,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"4762:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4762:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4772:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"4762:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4785:8:159","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":76921,"src":"4762:31:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":75799,"indexExpression":{"id":75798,"name":"_programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75789,"src":"4794:10:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4762:43:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75793,"id":75800,"nodeType":"Return","src":"4755:50:159"}]},"baseFunctions":[73764],"functionSelector":"9067088e","implemented":true,"kind":"function","modifiers":[],"name":"programCodeId","nameLocation":"4681:13:159","parameters":{"id":75790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75789,"mutability":"mutable","name":"_programId","nameLocation":"4703:10:159","nodeType":"VariableDeclaration","scope":75802,"src":"4695:18:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75788,"name":"address","nodeType":"ElementaryTypeName","src":"4695:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4694:20:159"},"returnParameters":{"id":75793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75792,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75802,"src":"4736:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75791,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4736:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4735:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75857,"nodeType":"FunctionDefinition","src":"4818:376:159","nodes":[],"body":{"id":75856,"nodeType":"Block","src":"4915:279:159","nodes":[],"statements":[{"assignments":[75813],"declarations":[{"constant":false,"id":75813,"mutability":"mutable","name":"router","nameLocation":"4941:6:159","nodeType":"VariableDeclaration","scope":75856,"src":"4925:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75812,"nodeType":"UserDefinedTypeName","pathNode":{"id":75811,"name":"Storage","nameLocations":["4925:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"4925:7:159"},"referencedDeclaration":73633,"src":"4925:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75816,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75814,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"4950:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4950:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4925:34:159"},{"assignments":[75821],"declarations":[{"constant":false,"id":75821,"mutability":"mutable","name":"res","nameLocation":"4987:3:159","nodeType":"VariableDeclaration","scope":75856,"src":"4970:20:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":75819,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4970:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75820,"nodeType":"ArrayTypeName","src":"4970:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":75828,"initialValue":{"arguments":[{"expression":{"id":75825,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75805,"src":"5007:12:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":75826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5020:6:159","memberName":"length","nodeType":"MemberAccess","src":"5007:19:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4993:13:159","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":75822,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4997:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75823,"nodeType":"ArrayTypeName","src":"4997:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":75827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4993:34:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4970:57:159"},{"body":{"id":75852,"nodeType":"Block","src":"5088:79:159","statements":[{"expression":{"id":75850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75840,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75821,"src":"5102:3:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":75842,"indexExpression":{"id":75841,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75830,"src":"5106:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5102:6:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":75843,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75813,"src":"5111:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75844,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5118:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"5111:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75845,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5131:8:159","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":76921,"src":"5111:28:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":75849,"indexExpression":{"baseExpression":{"id":75846,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75805,"src":"5140:12:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":75848,"indexExpression":{"id":75847,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75830,"src":"5153:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5140:15:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5111:45:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5102:54:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75851,"nodeType":"ExpressionStatement","src":"5102:54:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75833,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75830,"src":"5058:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":75834,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75805,"src":"5062:12:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":75835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5075:6:159","memberName":"length","nodeType":"MemberAccess","src":"5062:19:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5058:23:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75853,"initializationExpression":{"assignments":[75830],"declarations":[{"constant":false,"id":75830,"mutability":"mutable","name":"i","nameLocation":"5051:1:159","nodeType":"VariableDeclaration","scope":75853,"src":"5043:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75829,"name":"uint256","nodeType":"ElementaryTypeName","src":"5043:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75832,"initialValue":{"hexValue":"30","id":75831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5055:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5043:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5083:3:159","subExpression":{"id":75837,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75830,"src":"5083:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75839,"nodeType":"ExpressionStatement","src":"5083:3:159"},"nodeType":"ForStatement","src":"5038:129:159"},{"expression":{"id":75854,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75821,"src":"5184:3:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":75810,"id":75855,"nodeType":"Return","src":"5177:10:159"}]},"baseFunctions":[73773],"functionSelector":"baaf0201","implemented":true,"kind":"function","modifiers":[],"name":"programsCodeIds","nameLocation":"4827:15:159","parameters":{"id":75806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75805,"mutability":"mutable","name":"_programsIds","nameLocation":"4862:12:159","nodeType":"VariableDeclaration","scope":75857,"src":"4843:31:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":75803,"name":"address","nodeType":"ElementaryTypeName","src":"4843:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75804,"nodeType":"ArrayTypeName","src":"4843:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4842:33:159"},"returnParameters":{"id":75810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75809,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75857,"src":"4897:16:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":75807,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4897:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75808,"nodeType":"ArrayTypeName","src":"4897:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"4896:18:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75868,"nodeType":"FunctionDefinition","src":"5200:115:159","nodes":[],"body":{"id":75867,"nodeType":"Block","src":"5255:60:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75862,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"5272:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5272:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75864,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5282:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"5272:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75865,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5295:13:159","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":76923,"src":"5272:36:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75861,"id":75866,"nodeType":"Return","src":"5265:43:159"}]},"baseFunctions":[73778],"functionSelector":"96a2ddfa","implemented":true,"kind":"function","modifiers":[],"name":"programsCount","nameLocation":"5209:13:159","parameters":{"id":75858,"nodeType":"ParameterList","parameters":[],"src":"5222:2:159"},"returnParameters":{"id":75861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75860,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75868,"src":"5246:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75859,"name":"uint256","nodeType":"ElementaryTypeName","src":"5246:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5245:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75879,"nodeType":"FunctionDefinition","src":"5321:127:159","nodes":[],"body":{"id":75878,"nodeType":"Block","src":"5382:66:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75873,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"5399:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5399:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75875,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5409:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"5399:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75876,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5422:19:159","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":76925,"src":"5399:42:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75872,"id":75877,"nodeType":"Return","src":"5392:49:159"}]},"baseFunctions":[73783],"functionSelector":"007a32e7","implemented":true,"kind":"function","modifiers":[],"name":"validatedCodesCount","nameLocation":"5330:19:159","parameters":{"id":75869,"nodeType":"ParameterList","parameters":[],"src":"5349:2:159"},"returnParameters":{"id":75872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75871,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75879,"src":"5373:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75870,"name":"uint256","nodeType":"ElementaryTypeName","src":"5373:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5372:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75894,"nodeType":"FunctionDefinition","src":"5474:116:159","nodes":[],"body":{"id":75893,"nodeType":"Block","src":"5531:59:159","nodes":[],"statements":[{"expression":{"id":75891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75886,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"5541:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5541:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75888,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5551:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"5541:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75889,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5565:6:159","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":76856,"src":"5541:30:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75890,"name":"newMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75881,"src":"5574:9:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5541:42:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75892,"nodeType":"ExpressionStatement","src":"5541:42:159"}]},"baseFunctions":[73788],"functionSelector":"3d43b418","implemented":true,"kind":"function","modifiers":[{"id":75884,"kind":"modifierInvocation","modifierName":{"id":75883,"name":"onlyOwner","nameLocations":["5521:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":39282,"src":"5521:9:159"},"nodeType":"ModifierInvocation","src":"5521:9:159"}],"name":"setMirror","nameLocation":"5483:9:159","parameters":{"id":75882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75881,"mutability":"mutable","name":"newMirror","nameLocation":"5501:9:159","nodeType":"VariableDeclaration","scope":75894,"src":"5493:17:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75880,"name":"address","nodeType":"ElementaryTypeName","src":"5493:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5492:19:159"},"returnParameters":{"id":75885,"nodeType":"ParameterList","parameters":[],"src":"5531:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75946,"nodeType":"FunctionDefinition","src":"5612:398:159","nodes":[],"body":{"id":75945,"nodeType":"Block","src":"5650:360:159","nodes":[],"statements":[{"assignments":[75899],"declarations":[{"constant":false,"id":75899,"mutability":"mutable","name":"router","nameLocation":"5676:6:159","nodeType":"VariableDeclaration","scope":75945,"src":"5660:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75898,"nodeType":"UserDefinedTypeName","pathNode":{"id":75897,"name":"Storage","nameLocations":["5660:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"5660:7:159"},"referencedDeclaration":73633,"src":"5660:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75902,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75900,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"5685:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5685:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5660:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":75904,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75899,"src":"5713:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75905,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5720:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"5713:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75906,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5733:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76895,"src":"5713:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":75909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5749:1:159","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":75908,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5741:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":75907,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5741:7:159","typeDescriptions":{}}},"id":75910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5741:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5713:38:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"67656e65736973206861736820616c726561647920736574","id":75912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5753:26:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ec654a5a6e0b043639db348d1557e0acfcdb8bbf2c9de24c4983866c0ccfa21","typeString":"literal_string \"genesis hash already set\""},"value":"genesis hash already set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5ec654a5a6e0b043639db348d1557e0acfcdb8bbf2c9de24c4983866c0ccfa21","typeString":"literal_string \"genesis hash already set\""}],"id":75903,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5705:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5705:75:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75914,"nodeType":"ExpressionStatement","src":"5705:75:159"},{"assignments":[75916],"declarations":[{"constant":false,"id":75916,"mutability":"mutable","name":"genesisHash","nameLocation":"5799:11:159","nodeType":"VariableDeclaration","scope":75945,"src":"5791:19:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75915,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5791:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":75922,"initialValue":{"arguments":[{"expression":{"expression":{"id":75918,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75899,"src":"5823:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75919,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5830:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"5823:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75920,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5843:6:159","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":76897,"src":"5823:26:159","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":75917,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"5813:9:159","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":75921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5813:37:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5791:59:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75924,"name":"genesisHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75916,"src":"5869:11:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":75927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5892:1:159","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":75926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5884:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":75925,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5884:7:159","typeDescriptions":{}}},"id":75928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5884:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5869:25:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"756e61626c6520746f206c6f6f6b75702067656e657369732068617368","id":75930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5896:31:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_983585e130902c48e8b21c3e7ab53cd0d7f3ffc3109244b201330c039df8ce4e","typeString":"literal_string \"unable to lookup genesis hash\""},"value":"unable to lookup genesis hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_983585e130902c48e8b21c3e7ab53cd0d7f3ffc3109244b201330c039df8ce4e","typeString":"literal_string \"unable to lookup genesis hash\""}],"id":75923,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5861:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5861:67:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75932,"nodeType":"ExpressionStatement","src":"5861:67:159"},{"expression":{"id":75943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":75933,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75899,"src":"5939:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75936,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5946:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"5939:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75937,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5959:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76895,"src":"5939:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":75939,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75899,"src":"5976:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75940,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5983:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"5976:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75941,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5996:6:159","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":76897,"src":"5976:26:159","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":75938,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"5966:9:159","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":75942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5966:37:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5939:64:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75944,"nodeType":"ExpressionStatement","src":"5939:64:159"}]},"baseFunctions":[73791],"functionSelector":"8b1edf1e","implemented":true,"kind":"function","modifiers":[],"name":"lookupGenesisHash","nameLocation":"5621:17:159","parameters":{"id":75895,"nodeType":"ParameterList","parameters":[],"src":"5638:2:159"},"returnParameters":{"id":75896,"nodeType":"ParameterList","parameters":[],"src":"5650:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76015,"nodeType":"FunctionDefinition","src":"6016:637:159","nodes":[],"body":{"id":76014,"nodeType":"Block","src":"6094:559:159","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":75962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75954,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75950,"src":"6112:11:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":75955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6127:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6112:16:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":75958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6141:1:159","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":75957,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"6132:8:159","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":75959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6132:11:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":75960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6147:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6132:16:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6112:36:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"626c6f622063616e277420626520666f756e64","id":75963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6150:21:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_50f679c075644435e0dfad2beb36f786441d5cb0c0dd08ea9c9aa80169c123d2","typeString":"literal_string \"blob can't be found\""},"value":"blob can't be found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50f679c075644435e0dfad2beb36f786441d5cb0c0dd08ea9c9aa80169c123d2","typeString":"literal_string \"blob can't be found\""}],"id":75953,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6104:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6104:68:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75965,"nodeType":"ExpressionStatement","src":"6104:68:159"},{"assignments":[75968],"declarations":[{"constant":false,"id":75968,"mutability":"mutable","name":"router","nameLocation":"6199:6:159","nodeType":"VariableDeclaration","scope":76014,"src":"6183:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75967,"nodeType":"UserDefinedTypeName","pathNode":{"id":75966,"name":"Storage","nameLocations":["6183:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"6183:7:159"},"referencedDeclaration":73633,"src":"6183:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75971,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75969,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"6208:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6208:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6183:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":75973,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75968,"src":"6235:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75974,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6242:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"6235:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75975,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6255:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76895,"src":"6235:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":75978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6271:1:159","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":75977,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6263:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":75976,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6263:7:159","typeDescriptions":{}}},"id":75979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6263:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6235:38:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":75981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6275:58:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":75972,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6227:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6227:107:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75983,"nodeType":"ExpressionStatement","src":"6227:107:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"},"id":75993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":75985,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75968,"src":"6366:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75986,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6373:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"6366:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75987,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6386:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"6366:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":75989,"indexExpression":{"id":75988,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75948,"src":"6392:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6366:34:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":75990,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"6404:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6409:9:159","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":76883,"src":"6404:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$76883_$","typeString":"type(enum Gear.CodeState)"}},"id":75992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6419:7:159","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":76880,"src":"6404:22:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"src":"6366:60:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"676976656e20636f646520696420697320616c7265616479206f6e2076616c69646174696f6e206f722076616c696461746564","id":75994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6440:53:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_6767c8b133cc7e7263c64dbd155947c93c4fdbe1adf907d9d3428673190ae536","typeString":"literal_string \"given code id is already on validation or validated\""},"value":"given code id is already on validation or validated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6767c8b133cc7e7263c64dbd155947c93c4fdbe1adf907d9d3428673190ae536","typeString":"literal_string \"given code id is already on validation or validated\""}],"id":75984,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6345:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6345:158:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75996,"nodeType":"ExpressionStatement","src":"6345:158:159"},{"expression":{"id":76007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":75997,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75968,"src":"6514:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76001,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6521:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"6514:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76002,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6534:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"6514:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":76003,"indexExpression":{"id":76000,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75948,"src":"6540:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6514:34:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":76004,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"6551:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6556:9:159","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":76883,"src":"6551:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$76883_$","typeString":"type(enum Gear.CodeState)"}},"id":76006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6566:19:159","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":76881,"src":"6551:34:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"src":"6514:71:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"id":76008,"nodeType":"ExpressionStatement","src":"6514:71:159"},{"eventCall":{"arguments":[{"id":76010,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75948,"src":"6625:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76011,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75950,"src":"6634:11:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76009,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73652,"src":"6601:23:159","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":76012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6601:45:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76013,"nodeType":"EmitStatement","src":"6596:50:159"}]},"baseFunctions":[73799],"functionSelector":"1c149d8a","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidation","nameLocation":"6025:21:159","parameters":{"id":75951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75948,"mutability":"mutable","name":"_codeId","nameLocation":"6055:7:159","nodeType":"VariableDeclaration","scope":76015,"src":"6047:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75947,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6047:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":75950,"mutability":"mutable","name":"_blobTxHash","nameLocation":"6072:11:159","nodeType":"VariableDeclaration","scope":76015,"src":"6064:19:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75949,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6064:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6046:38:159"},"returnParameters":{"id":75952,"nodeType":"ParameterList","parameters":[],"src":"6094:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76046,"nodeType":"FunctionDefinition","src":"6659:231:159","nodes":[],"body":{"id":76045,"nodeType":"Block","src":"6741:149:159","nodes":[],"statements":[{"assignments":[76025],"declarations":[{"constant":false,"id":76025,"mutability":"mutable","name":"mirror","nameLocation":"6759:6:159","nodeType":"VariableDeclaration","scope":76045,"src":"6751:14:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76024,"name":"address","nodeType":"ElementaryTypeName","src":"6751:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76030,"initialValue":{"arguments":[{"id":76027,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76017,"src":"6783:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76028,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76019,"src":"6792:5:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76026,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76382,"src":"6768:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,bytes32) returns (address)"}},"id":76029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6768:30:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6751:47:159"},{"expression":{"arguments":[{"expression":{"id":76035,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6836:3:159","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6840:6:159","memberName":"sender","nodeType":"MemberAccess","src":"6836:10:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":76039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6856:1:159","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":76038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6848:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":76037,"name":"address","nodeType":"ElementaryTypeName","src":"6848:7:159","typeDescriptions":{}}},"id":76040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6848:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":76032,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76025,"src":"6817:6:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76031,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73559,"src":"6809:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$73559_$","typeString":"type(contract IMirror)"}},"id":76033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6809:15:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73559","typeString":"contract IMirror"}},"id":76034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6825:10:159","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":73550,"src":"6809:26:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":76041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6809:50:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76042,"nodeType":"ExpressionStatement","src":"6809:50:159"},{"expression":{"id":76043,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76025,"src":"6877:6:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":76023,"id":76044,"nodeType":"Return","src":"6870:13:159"}]},"baseFunctions":[73809],"functionSelector":"527de0f9","implemented":true,"kind":"function","modifiers":[],"name":"createProgram","nameLocation":"6668:13:159","parameters":{"id":76020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76017,"mutability":"mutable","name":"_codeId","nameLocation":"6690:7:159","nodeType":"VariableDeclaration","scope":76046,"src":"6682:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76016,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6682:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":76019,"mutability":"mutable","name":"_salt","nameLocation":"6707:5:159","nodeType":"VariableDeclaration","scope":76046,"src":"6699:13:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76018,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6699:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6681:32:159"},"returnParameters":{"id":76023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76022,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76046,"src":"6732:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76021,"name":"address","nodeType":"ElementaryTypeName","src":"6732:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6731:9:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76089,"nodeType":"FunctionDefinition","src":"6896:382:159","nodes":[],"body":{"id":76088,"nodeType":"Block","src":"7031:247:159","nodes":[],"statements":[{"assignments":[76058],"declarations":[{"constant":false,"id":76058,"mutability":"mutable","name":"mirror","nameLocation":"7049:6:159","nodeType":"VariableDeclaration","scope":76088,"src":"7041:14:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76057,"name":"address","nodeType":"ElementaryTypeName","src":"7041:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76063,"initialValue":{"arguments":[{"id":76060,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76050,"src":"7073:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76061,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76052,"src":"7082:5:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76059,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76382,"src":"7058:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,bytes32) returns (address)"}},"id":76062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7058:30:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7041:47:159"},{"assignments":[76065],"declarations":[{"constant":false,"id":76065,"mutability":"mutable","name":"decoder","nameLocation":"7106:7:159","nodeType":"VariableDeclaration","scope":76088,"src":"7098:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76064,"name":"address","nodeType":"ElementaryTypeName","src":"7098:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76076,"initialValue":{"arguments":[{"id":76067,"name":"_decoderImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76048,"src":"7131:12:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":76071,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76050,"src":"7172:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76072,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76052,"src":"7181:5:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76069,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7155:3:159","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":76070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7159:12:159","memberName":"encodePacked","nodeType":"MemberAccess","src":"7155:16:159","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7155:32:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76068,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7145:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7145:43:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76066,"name":"_createDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76408,"src":"7116:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":76075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7116:73:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7098:91:159"},{"expression":{"arguments":[{"expression":{"id":76081,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7227:3:159","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7231:6:159","memberName":"sender","nodeType":"MemberAccess","src":"7227:10:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76083,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76065,"src":"7239:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":76078,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76058,"src":"7208:6:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76077,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73559,"src":"7200:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$73559_$","typeString":"type(contract IMirror)"}},"id":76079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7200:15:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73559","typeString":"contract IMirror"}},"id":76080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7216:10:159","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":73550,"src":"7200:26:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":76084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7200:47:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76085,"nodeType":"ExpressionStatement","src":"7200:47:159"},{"expression":{"id":76086,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76058,"src":"7265:6:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":76056,"id":76087,"nodeType":"Return","src":"7258:13:159"}]},"baseFunctions":[73821],"functionSelector":"e7006a74","implemented":true,"kind":"function","modifiers":[],"name":"createProgramWithDecoder","nameLocation":"6905:24:159","parameters":{"id":76053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76048,"mutability":"mutable","name":"_decoderImpl","nameLocation":"6938:12:159","nodeType":"VariableDeclaration","scope":76089,"src":"6930:20:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76047,"name":"address","nodeType":"ElementaryTypeName","src":"6930:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76050,"mutability":"mutable","name":"_codeId","nameLocation":"6960:7:159","nodeType":"VariableDeclaration","scope":76089,"src":"6952:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76049,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6952:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":76052,"mutability":"mutable","name":"_salt","nameLocation":"6977:5:159","nodeType":"VariableDeclaration","scope":76089,"src":"6969:13:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76051,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6969:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6929:54:159"},"returnParameters":{"id":76056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76089,"src":"7018:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76054,"name":"address","nodeType":"ElementaryTypeName","src":"7018:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7017:9:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76221,"nodeType":"FunctionDefinition","src":"7311:1336:159","nodes":[],"body":{"id":76220,"nodeType":"Block","src":"7420:1227:159","nodes":[],"statements":[{"assignments":[76101],"declarations":[{"constant":false,"id":76101,"mutability":"mutable","name":"router","nameLocation":"7446:6:159","nodeType":"VariableDeclaration","scope":76220,"src":"7430:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76100,"nodeType":"UserDefinedTypeName","pathNode":{"id":76099,"name":"Storage","nameLocations":["7430:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"7430:7:159"},"referencedDeclaration":73633,"src":"7430:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":76104,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76102,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"7455:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":76103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7455:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7430:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":76106,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76101,"src":"7482:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76107,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7489:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"7482:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":76108,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7502:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76895,"src":"7482:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7518:1:159","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":76110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7510:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":76109,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7510:7:159","typeDescriptions":{}}},"id":76112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7510:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7482:38:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":76114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7522:58:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":76105,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7474:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7474:107:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76116,"nodeType":"ExpressionStatement","src":"7474:107:159"},{"assignments":[76118],"declarations":[{"constant":false,"id":76118,"mutability":"mutable","name":"codeCommitmentsHashes","nameLocation":"7605:21:159","nodeType":"VariableDeclaration","scope":76220,"src":"7592:34:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":76117,"name":"bytes","nodeType":"ElementaryTypeName","src":"7592:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":76119,"nodeType":"VariableDeclarationStatement","src":"7592:34:159"},{"body":{"id":76206,"nodeType":"Block","src":"7691:784:159","statements":[{"assignments":[76135],"declarations":[{"constant":false,"id":76135,"mutability":"mutable","name":"codeCommitment","nameLocation":"7734:14:159","nodeType":"VariableDeclaration","scope":76206,"src":"7705:43:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment"},"typeName":{"id":76134,"nodeType":"UserDefinedTypeName","pathNode":{"id":76133,"name":"Gear.CodeCommitment","nameLocations":["7705:4:159","7710:14:159"],"nodeType":"IdentifierPath","referencedDeclaration":76879,"src":"7705:19:159"},"referencedDeclaration":76879,"src":"7705:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"visibility":"internal"}],"id":76139,"initialValue":{"baseExpression":{"id":76136,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76093,"src":"7751:16:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$76879_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":76138,"indexExpression":{"id":76137,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76121,"src":"7768:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7751:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"7705:65:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"},"id":76150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":76141,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76101,"src":"7810:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76142,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7817:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"7810:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76143,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7830:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"7810:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":76146,"indexExpression":{"expression":{"id":76144,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76135,"src":"7836:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7851:2:159","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76876,"src":"7836:17:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7810:44:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":76147,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"7858:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7863:9:159","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":76883,"src":"7858:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$76883_$","typeString":"type(enum Gear.CodeState)"}},"id":76149,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7873:19:159","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":76881,"src":"7858:34:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"src":"7810:82:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652072657175657374656420666f722076616c69646174696f6e20746f20626520636f6d6d6974746564","id":76151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7910:55:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5641fde195ef857639d9de420cb3fc56957be6957a3c8a5e78a2243186a510e8","typeString":"literal_string \"code must be requested for validation to be committed\""},"value":"code must be requested for validation to be committed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5641fde195ef857639d9de420cb3fc56957be6957a3c8a5e78a2243186a510e8","typeString":"literal_string \"code must be requested for validation to be committed\""}],"id":76140,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7785:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7785:194:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76153,"nodeType":"ExpressionStatement","src":"7785:194:159"},{"condition":{"expression":{"id":76154,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76135,"src":"7998:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8013:5:159","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":76878,"src":"7998:20:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":76185,"nodeType":"Block","src":"8189:84:159","statements":[{"expression":{"id":76183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"8207:51:159","subExpression":{"baseExpression":{"expression":{"expression":{"id":76177,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76101,"src":"8214:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76178,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8221:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"8214:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8234:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"8214:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":76182,"indexExpression":{"expression":{"id":76180,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76135,"src":"8240:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8255:2:159","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76876,"src":"8240:17:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8214:44:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76184,"nodeType":"ExpressionStatement","src":"8207:51:159"}]},"id":76186,"nodeType":"IfStatement","src":"7994:279:159","trueBody":{"id":76176,"nodeType":"Block","src":"8020:163:159","statements":[{"expression":{"id":76167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":76156,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76101,"src":"8038:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76161,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8045:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"8038:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8058:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"8038:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":76163,"indexExpression":{"expression":{"id":76159,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76135,"src":"8064:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8079:2:159","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76876,"src":"8064:17:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8038:44:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":76164,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"8085:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8090:9:159","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":76883,"src":"8085:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$76883_$","typeString":"type(enum Gear.CodeState)"}},"id":76166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8100:9:159","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":76882,"src":"8085:24:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"src":"8038:71:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"id":76168,"nodeType":"ExpressionStatement","src":"8038:71:159"},{"expression":{"id":76174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8127:41:159","subExpression":{"expression":{"expression":{"id":76169,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76101,"src":"8127:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8134:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"8127:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8147:19:159","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":76925,"src":"8127:39:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76175,"nodeType":"ExpressionStatement","src":"8127:41:159"}]}},{"eventCall":{"arguments":[{"expression":{"id":76188,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76135,"src":"8309:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8324:2:159","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76876,"src":"8309:17:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76190,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76135,"src":"8328:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8343:5:159","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":76878,"src":"8328:20:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":76187,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73645,"src":"8292:16:159","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":76192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8292:57:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76193,"nodeType":"EmitStatement","src":"8287:62:159"},{"expression":{"id":76204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76194,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"8364:21:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76198,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"8401:21:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":76201,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76135,"src":"8448:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}],"expression":{"id":76199,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"8424:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8429:18:159","memberName":"codeCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":77055,"src":"8424:23:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_CodeCommitment_$76879_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.CodeCommitment calldata) pure returns (bytes32)"}},"id":76202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8424:39:159","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":76196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8388:5:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":76195,"name":"bytes","nodeType":"ElementaryTypeName","src":"8388:5:159","typeDescriptions":{}}},"id":76197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8394:6:159","memberName":"concat","nodeType":"MemberAccess","src":"8388:12:159","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8388:76:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8364:100:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":76205,"nodeType":"ExpressionStatement","src":"8364:100:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76124,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76121,"src":"7657:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76125,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76093,"src":"7661:16:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$76879_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":76126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7678:6:159","memberName":"length","nodeType":"MemberAccess","src":"7661:23:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7657:27:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76207,"initializationExpression":{"assignments":[76121],"declarations":[{"constant":false,"id":76121,"mutability":"mutable","name":"i","nameLocation":"7650:1:159","nodeType":"VariableDeclaration","scope":76207,"src":"7642:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76120,"name":"uint256","nodeType":"ElementaryTypeName","src":"7642:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76123,"initialValue":{"hexValue":"30","id":76122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7654:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7642:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7686:3:159","subExpression":{"id":76128,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76121,"src":"7686:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76130,"nodeType":"ExpressionStatement","src":"7686:3:159"},"nodeType":"ForStatement","src":"7637:838:159"},{"expression":{"arguments":[{"arguments":[{"id":76211,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76101,"src":"8530:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":76213,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"8548:21:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76212,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8538:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8538:32:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76215,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76096,"src":"8572:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":76209,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"8506:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8511:18:159","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":77231,"src":"8506:23:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$73633_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":76216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8506:78:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7369676e61747572657320766572696669636174696f6e206661696c6564","id":76217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8598:32:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""},"value":"signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""}],"id":76208,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8485:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8485:155:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76219,"nodeType":"ExpressionStatement","src":"8485:155:159"}]},"baseFunctions":[73832],"functionSelector":"e97d3eb3","implemented":true,"kind":"function","modifiers":[],"name":"commitCodes","nameLocation":"7320:11:159","parameters":{"id":76097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76093,"mutability":"mutable","name":"_codeCommitments","nameLocation":"7363:16:159","nodeType":"VariableDeclaration","scope":76221,"src":"7332:47:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$76879_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment[]"},"typeName":{"baseType":{"id":76091,"nodeType":"UserDefinedTypeName","pathNode":{"id":76090,"name":"Gear.CodeCommitment","nameLocations":["7332:4:159","7337:14:159"],"nodeType":"IdentifierPath","referencedDeclaration":76879,"src":"7332:19:159"},"referencedDeclaration":76879,"src":"7332:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"id":76092,"nodeType":"ArrayTypeName","src":"7332:21:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$76879_storage_$dyn_storage_ptr","typeString":"struct Gear.CodeCommitment[]"}},"visibility":"internal"},{"constant":false,"id":76096,"mutability":"mutable","name":"_signatures","nameLocation":"7398:11:159","nodeType":"VariableDeclaration","scope":76221,"src":"7381:28:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":76094,"name":"bytes","nodeType":"ElementaryTypeName","src":"7381:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":76095,"nodeType":"ArrayTypeName","src":"7381:7:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"7331:79:159"},"returnParameters":{"id":76098,"nodeType":"ParameterList","parameters":[],"src":"7420:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76301,"nodeType":"FunctionDefinition","src":"8653:798:159","nodes":[],"body":{"id":76300,"nodeType":"Block","src":"8798:653:159","nodes":[],"statements":[{"assignments":[76235],"declarations":[{"constant":false,"id":76235,"mutability":"mutable","name":"router","nameLocation":"8824:6:159","nodeType":"VariableDeclaration","scope":76300,"src":"8808:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76234,"nodeType":"UserDefinedTypeName","pathNode":{"id":76233,"name":"Storage","nameLocations":["8808:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"8808:7:159"},"referencedDeclaration":73633,"src":"8808:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":76238,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76236,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"8833:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":76237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8833:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8808:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":76240,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76235,"src":"8860:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76241,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8867:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"8860:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":76242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8880:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76895,"src":"8860:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8896:1:159","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":76244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8888:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":76243,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8888:7:159","typeDescriptions":{}}},"id":76246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8888:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8860:38:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":76248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8900:58:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":76239,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8852:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8852:107:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76250,"nodeType":"ExpressionStatement","src":"8852:107:159"},{"assignments":[76252],"declarations":[{"constant":false,"id":76252,"mutability":"mutable","name":"blockCommitmentsHashes","nameLocation":"8983:22:159","nodeType":"VariableDeclaration","scope":76300,"src":"8970:35:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":76251,"name":"bytes","nodeType":"ElementaryTypeName","src":"8970:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":76253,"nodeType":"VariableDeclarationStatement","src":"8970:35:159"},{"body":{"id":76286,"nodeType":"Block","src":"9071:207:159","statements":[{"assignments":[76269],"declarations":[{"constant":false,"id":76269,"mutability":"mutable","name":"blockCommitment","nameLocation":"9115:15:159","nodeType":"VariableDeclaration","scope":76286,"src":"9085:45:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":76268,"nodeType":"UserDefinedTypeName","pathNode":{"id":76267,"name":"Gear.BlockCommitment","nameLocations":["9085:4:159","9090:15:159"],"nodeType":"IdentifierPath","referencedDeclaration":76874,"src":"9085:20:159"},"referencedDeclaration":76874,"src":"9085:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"id":76273,"initialValue":{"baseExpression":{"id":76270,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76225,"src":"9133:17:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$76874_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":76272,"indexExpression":{"id":76271,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76255,"src":"9151:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9133:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"9085:68:159"},{"expression":{"id":76284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76274,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76252,"src":"9167:22:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76278,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76252,"src":"9205:22:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":76280,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76235,"src":"9242:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":76281,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76269,"src":"9250:15:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}],"id":76279,"name":"_commitBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76477,"src":"9229:12:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$73633_storage_ptr_$_t_struct$_BlockCommitment_$76874_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BlockCommitment calldata) returns (bytes32)"}},"id":76282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9229:37:159","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":76276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9192:5:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":76275,"name":"bytes","nodeType":"ElementaryTypeName","src":"9192:5:159","typeDescriptions":{}}},"id":76277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9198:6:159","memberName":"concat","nodeType":"MemberAccess","src":"9192:12:159","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9192:75:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"9167:100:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":76285,"nodeType":"ExpressionStatement","src":"9167:100:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76258,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76255,"src":"9036:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76259,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76225,"src":"9040:17:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$76874_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":76260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9058:6:159","memberName":"length","nodeType":"MemberAccess","src":"9040:24:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9036:28:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76287,"initializationExpression":{"assignments":[76255],"declarations":[{"constant":false,"id":76255,"mutability":"mutable","name":"i","nameLocation":"9029:1:159","nodeType":"VariableDeclaration","scope":76287,"src":"9021:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76254,"name":"uint256","nodeType":"ElementaryTypeName","src":"9021:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76257,"initialValue":{"hexValue":"30","id":76256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9033:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9021:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9066:3:159","subExpression":{"id":76262,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76255,"src":"9066:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76264,"nodeType":"ExpressionStatement","src":"9066:3:159"},"nodeType":"ForStatement","src":"9016:262:159"},{"expression":{"arguments":[{"arguments":[{"id":76291,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76235,"src":"9333:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":76293,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76252,"src":"9351:22:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76292,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9341:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9341:33:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76295,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76228,"src":"9376:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":76289,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"9309:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9314:18:159","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":77231,"src":"9309:23:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$73633_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":76296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9309:79:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7369676e61747572657320766572696669636174696f6e206661696c6564","id":76297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9402:32:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""},"value":"signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""}],"id":76288,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9288:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9288:156:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76299,"nodeType":"ExpressionStatement","src":"9288:156:159"}]},"baseFunctions":[73843],"functionSelector":"01b1d156","implemented":true,"kind":"function","modifiers":[{"id":76231,"kind":"modifierInvocation","modifierName":{"id":76230,"name":"nonReentrant","nameLocations":["8781:12:159"],"nodeType":"IdentifierPath","referencedDeclaration":44000,"src":"8781:12:159"},"nodeType":"ModifierInvocation","src":"8781:12:159"}],"name":"commitBlocks","nameLocation":"8662:12:159","parameters":{"id":76229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76225,"mutability":"mutable","name":"_blockCommitments","nameLocation":"8707:17:159","nodeType":"VariableDeclaration","scope":76301,"src":"8675:49:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$76874_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment[]"},"typeName":{"baseType":{"id":76223,"nodeType":"UserDefinedTypeName","pathNode":{"id":76222,"name":"Gear.BlockCommitment","nameLocations":["8675:4:159","8680:15:159"],"nodeType":"IdentifierPath","referencedDeclaration":76874,"src":"8675:20:159"},"referencedDeclaration":76874,"src":"8675:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"id":76224,"nodeType":"ArrayTypeName","src":"8675:22:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$76874_storage_$dyn_storage_ptr","typeString":"struct Gear.BlockCommitment[]"}},"visibility":"internal"},{"constant":false,"id":76228,"mutability":"mutable","name":"_signatures","nameLocation":"8743:11:159","nodeType":"VariableDeclaration","scope":76301,"src":"8726:28:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":76226,"name":"bytes","nodeType":"ElementaryTypeName","src":"8726:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":76227,"nodeType":"ArrayTypeName","src":"8726:7:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"8674:81:159"},"returnParameters":{"id":76232,"nodeType":"ParameterList","parameters":[],"src":"8798:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76382,"nodeType":"FunctionDefinition","src":"9493:887:159","nodes":[],"body":{"id":76381,"nodeType":"Block","src":"9575:805:159","nodes":[],"statements":[{"assignments":[76312],"declarations":[{"constant":false,"id":76312,"mutability":"mutable","name":"router","nameLocation":"9601:6:159","nodeType":"VariableDeclaration","scope":76381,"src":"9585:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76311,"nodeType":"UserDefinedTypeName","pathNode":{"id":76310,"name":"Storage","nameLocations":["9585:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"9585:7:159"},"referencedDeclaration":73633,"src":"9585:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":76315,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76313,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"9610:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":76314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9610:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9585:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":76317,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76312,"src":"9637:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76318,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9644:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"9637:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":76319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9657:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76895,"src":"9637:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9673:1:159","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":76321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9665:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":76320,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9665:7:159","typeDescriptions":{}}},"id":76323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9665:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9637:38:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":76325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9677:58:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":76316,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9629:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9629:107:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76327,"nodeType":"ExpressionStatement","src":"9629:107:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"},"id":76337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":76329,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76312,"src":"9768:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9775:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"9768:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9788:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"9768:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":76333,"indexExpression":{"id":76332,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76303,"src":"9794:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9768:34:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":76334,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"9806:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9811:9:159","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":76883,"src":"9806:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$76883_$","typeString":"type(enum Gear.CodeState)"}},"id":76336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9821:9:159","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":76882,"src":"9806:24:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"src":"9768:62:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652076616c696461746564206265666f72652070726f6772616d206372656174696f6e","id":76338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9844:48:159","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":76328,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9747:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9747:155:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76340,"nodeType":"ExpressionStatement","src":"9747:155:159"},{"assignments":[76342],"declarations":[{"constant":false,"id":76342,"mutability":"mutable","name":"actorId","nameLocation":"10071:7:159","nodeType":"VariableDeclaration","scope":76381,"src":"10063:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76341,"name":"address","nodeType":"ElementaryTypeName","src":"10063:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76356,"initialValue":{"arguments":[{"expression":{"expression":{"id":76345,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76312,"src":"10119:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76346,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10126:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"10119:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":76347,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10140:11:159","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":76858,"src":"10119:32:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":76351,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76303,"src":"10180:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76352,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76305,"src":"10189:5:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76349,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10163:3:159","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":76350,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10167:12:159","memberName":"encodePacked","nodeType":"MemberAccess","src":"10163:16:159","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10163:32:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76348,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10153:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10153:43:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76343,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41840,"src":"10093:6:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$41840_$","typeString":"type(library Clones)"}},"id":76344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10100:18:159","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":41758,"src":"10093:25:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":76355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10093:104:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10063:134:159"},{"expression":{"id":76365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":76357,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76312,"src":"10208:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76361,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10215:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"10208:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76362,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10228:8:159","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":76921,"src":"10208:28:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":76363,"indexExpression":{"id":76360,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76342,"src":"10237:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10208:37:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76364,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76303,"src":"10248:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10208:47:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":76366,"nodeType":"ExpressionStatement","src":"10208:47:159"},{"expression":{"id":76372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10265:35:159","subExpression":{"expression":{"expression":{"id":76367,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76312,"src":"10265:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10272:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"10265:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76371,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10285:13:159","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":76923,"src":"10265:33:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76373,"nodeType":"ExpressionStatement","src":"10265:35:159"},{"eventCall":{"arguments":[{"id":76375,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76342,"src":"10331:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76376,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76303,"src":"10340:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76374,"name":"ProgramCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73666,"src":"10316:14:159","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":76377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10316:32:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76378,"nodeType":"EmitStatement","src":"10311:37:159"},{"expression":{"id":76379,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76342,"src":"10366:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":76309,"id":76380,"nodeType":"Return","src":"10359:14:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createProgram","nameLocation":"9502:14:159","parameters":{"id":76306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76303,"mutability":"mutable","name":"_codeId","nameLocation":"9525:7:159","nodeType":"VariableDeclaration","scope":76382,"src":"9517:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76302,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9517:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":76305,"mutability":"mutable","name":"_salt","nameLocation":"9542:5:159","nodeType":"VariableDeclaration","scope":76382,"src":"9534:13:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76304,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9534:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9516:32:159"},"returnParameters":{"id":76309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76308,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76382,"src":"9566:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76307,"name":"address","nodeType":"ElementaryTypeName","src":"9566:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9565:9:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76408,"nodeType":"FunctionDefinition","src":"10386:246:159","nodes":[],"body":{"id":76407,"nodeType":"Block","src":"10476:156:159","nodes":[],"statements":[{"assignments":[76392],"declarations":[{"constant":false,"id":76392,"mutability":"mutable","name":"decoder","nameLocation":"10494:7:159","nodeType":"VariableDeclaration","scope":76407,"src":"10486:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76391,"name":"address","nodeType":"ElementaryTypeName","src":"10486:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76398,"initialValue":{"arguments":[{"id":76395,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76384,"src":"10530:15:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76396,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76386,"src":"10547:5:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76393,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41840,"src":"10504:6:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$41840_$","typeString":"type(library Clones)"}},"id":76394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10511:18:159","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":41758,"src":"10504:25:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":76397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10504:49:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10486:67:159"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76400,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76392,"src":"10579:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76399,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73594,"src":"10564:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$73594_$","typeString":"type(contract IMirrorDecoder)"}},"id":76401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10564:23:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorDecoder_$73594","typeString":"contract IMirrorDecoder"}},"id":76402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10588:10:159","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":73564,"src":"10564:34:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":76403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10564:36:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76404,"nodeType":"ExpressionStatement","src":"10564:36:159"},{"expression":{"id":76405,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76392,"src":"10618:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":76390,"id":76406,"nodeType":"Return","src":"10611:14:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createDecoder","nameLocation":"10395:14:159","parameters":{"id":76387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76384,"mutability":"mutable","name":"_implementation","nameLocation":"10418:15:159","nodeType":"VariableDeclaration","scope":76408,"src":"10410:23:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76383,"name":"address","nodeType":"ElementaryTypeName","src":"10410:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76386,"mutability":"mutable","name":"_salt","nameLocation":"10443:5:159","nodeType":"VariableDeclaration","scope":76408,"src":"10435:13:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76385,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10435:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10409:40:159"},"returnParameters":{"id":76390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76389,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76408,"src":"10467:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76388,"name":"address","nodeType":"ElementaryTypeName","src":"10467:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10466:9:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76477,"nodeType":"FunctionDefinition","src":"10638:1094:159","nodes":[],"body":{"id":76476,"nodeType":"Block","src":"10778:954:159","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":76420,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76411,"src":"10809:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76421,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10816:20:159","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":73616,"src":"10809:27:159","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$76888_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":76422,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10837:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76885,"src":"10809:32:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":76423,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"10845:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10862:22:159","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":76867,"src":"10845:39:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10809:75:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b2068617368","id":76426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10898:39:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_4a13fb2485de3ac50aa69e9cf88b3994102e3ec72af73005448c8624cb4f1ed7","typeString":"literal_string \"invalid previous committed block hash\""},"value":"invalid previous committed block hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4a13fb2485de3ac50aa69e9cf88b3994102e3ec72af73005448c8624cb4f1ed7","typeString":"literal_string \"invalid previous committed block hash\""}],"id":76419,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10788:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10788:159:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76428,"nodeType":"ExpressionStatement","src":"10788:159:159"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":76432,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"10990:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11007:16:159","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":76869,"src":"10990:33:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76430,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"10966:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10971:18:159","memberName":"blockIsPredecessor","nodeType":"MemberAccess","referencedDeclaration":77036,"src":"10966:23:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":76434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10966:58:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616c6c6f776564207072656465636573736f7220626c6f636b207761736e277420666f756e64","id":76435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11026:40:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_b3ebb0be53d5bf46a2d46be11aa5ba444a61071a9171c96feb964b4bc5f6539a","typeString":"literal_string \"allowed predecessor block wasn't found\""},"value":"allowed predecessor block wasn't found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3ebb0be53d5bf46a2d46be11aa5ba444a61071a9171c96feb964b4bc5f6539a","typeString":"literal_string \"allowed predecessor block wasn't found\""}],"id":76429,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10958:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10958:109:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76437,"nodeType":"ExpressionStatement","src":"10958:109:159"},{"expression":{"id":76448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":76438,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76411,"src":"11207:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76440,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11214:20:159","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":73616,"src":"11207:27:159","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$76888_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":76443,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11261:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11278:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76863,"src":"11261:21:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76445,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11284:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11301:9:159","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":76865,"src":"11284:26:159","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":76441,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"11237:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11242:18:159","memberName":"CommittedBlockInfo","nodeType":"MemberAccess","referencedDeclaration":76888,"src":"11237:23:159","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CommittedBlockInfo_$76888_storage_ptr_$","typeString":"type(struct Gear.CommittedBlockInfo storage pointer)"}},"id":76447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11237:74:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$76888_memory_ptr","typeString":"struct Gear.CommittedBlockInfo memory"}},"src":"11207:104:159","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$76888_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":76449,"nodeType":"ExpressionStatement","src":"11207:104:159"},{"assignments":[76451],"declarations":[{"constant":false,"id":76451,"mutability":"mutable","name":"transitionsHashesHash","nameLocation":"11330:21:159","nodeType":"VariableDeclaration","scope":76476,"src":"11322:29:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76450,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11322:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":76457,"initialValue":{"arguments":[{"id":76453,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76411,"src":"11373:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":76454,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11381:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11398:11:159","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":76873,"src":"11381:28:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$76948_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_struct$_StateTransition_$76948_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}],"id":76452,"name":"_commitTransitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76562,"src":"11354:18:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$73633_storage_ptr_$_t_array$_t_struct$_StateTransition_$76948_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.StateTransition calldata[] calldata) returns (bytes32)"}},"id":76456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11354:56:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11322:88:159"},{"eventCall":{"arguments":[{"expression":{"id":76459,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11441:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11458:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76863,"src":"11441:21:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76458,"name":"BlockCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73638,"src":"11426:14:159","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":76461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11426:37:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76462,"nodeType":"EmitStatement","src":"11421:42:159"},{"expression":{"arguments":[{"expression":{"id":76465,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11519:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11536:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76863,"src":"11519:21:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76467,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11554:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11571:9:159","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":76865,"src":"11554:26:159","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"expression":{"id":76469,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11594:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11611:22:159","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":76867,"src":"11594:39:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76471,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11647:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11664:16:159","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":76869,"src":"11647:33:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76473,"name":"transitionsHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76451,"src":"11694:21:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76463,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"11481:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11486:19:159","memberName":"blockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":76992,"src":"11481:24:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint48_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,uint48,bytes32,bytes32,bytes32) pure returns (bytes32)"}},"id":76474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11481:244:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":76418,"id":76475,"nodeType":"Return","src":"11474:251:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitBlock","nameLocation":"10647:12:159","parameters":{"id":76415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76411,"mutability":"mutable","name":"router","nameLocation":"10676:6:159","nodeType":"VariableDeclaration","scope":76477,"src":"10660:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76410,"nodeType":"UserDefinedTypeName","pathNode":{"id":76409,"name":"Storage","nameLocations":["10660:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"10660:7:159"},"referencedDeclaration":73633,"src":"10660:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":76414,"mutability":"mutable","name":"_blockCommitment","nameLocation":"10714:16:159","nodeType":"VariableDeclaration","scope":76477,"src":"10684:46:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":76413,"nodeType":"UserDefinedTypeName","pathNode":{"id":76412,"name":"Gear.BlockCommitment","nameLocations":["10684:4:159","10689:15:159"],"nodeType":"IdentifierPath","referencedDeclaration":76874,"src":"10684:20:159"},"referencedDeclaration":76874,"src":"10684:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"src":"10659:72:159"},"returnParameters":{"id":76418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76417,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76477,"src":"10765:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76416,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10765:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10764:9:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76562,"nodeType":"FunctionDefinition","src":"11738:839:159","nodes":[],"body":{"id":76561,"nodeType":"Block","src":"11882:695:159","nodes":[],"statements":[{"assignments":[76490],"declarations":[{"constant":false,"id":76490,"mutability":"mutable","name":"transitionsHashes","nameLocation":"11905:17:159","nodeType":"VariableDeclaration","scope":76561,"src":"11892:30:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":76489,"name":"bytes","nodeType":"ElementaryTypeName","src":"11892:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":76491,"nodeType":"VariableDeclarationStatement","src":"11892:30:159"},{"body":{"id":76555,"nodeType":"Block","src":"11983:542:159","statements":[{"assignments":[76507],"declarations":[{"constant":false,"id":76507,"mutability":"mutable","name":"transition","nameLocation":"12027:10:159","nodeType":"VariableDeclaration","scope":76555,"src":"11997:40:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":76506,"nodeType":"UserDefinedTypeName","pathNode":{"id":76505,"name":"Gear.StateTransition","nameLocations":["11997:4:159","12002:15:159"],"nodeType":"IdentifierPath","referencedDeclaration":76948,"src":"11997:20:159"},"referencedDeclaration":76948,"src":"11997:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"id":76511,"initialValue":{"baseExpression":{"id":76508,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76484,"src":"12040:12:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$76948_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":76510,"indexExpression":{"id":76509,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76493,"src":"12053:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12040:15:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"nodeType":"VariableDeclarationStatement","src":"11997:58:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":76513,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76480,"src":"12095:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76514,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12102:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"12095:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76515,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12115:8:159","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":76921,"src":"12095:28:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":76518,"indexExpression":{"expression":{"id":76516,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76507,"src":"12124:10:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12135:7:159","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":76933,"src":"12124:18:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12095:48:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":76519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12147:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12095:53:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f756c646e277420706572666f726d207472616e736974696f6e20666f7220756e6b6e6f776e2070726f6772616d","id":76521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12150:49:159","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":76512,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12070:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12070:143:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76523,"nodeType":"ExpressionStatement","src":"12070:143:159"},{"expression":{"arguments":[{"expression":{"id":76530,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76507,"src":"12284:10:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12295:7:159","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":76933,"src":"12284:18:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":76532,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76507,"src":"12304:10:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12315:14:159","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":76939,"src":"12304:25:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"expression":{"expression":{"id":76525,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76480,"src":"12241:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76526,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12248:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"12241:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":76527,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12262:11:159","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":76860,"src":"12241:32:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76524,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73855,"src":"12228:12:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$73855_$","typeString":"type(contract IWrappedVara)"}},"id":76528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12228:46:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73855","typeString":"contract IWrappedVara"}},"id":76529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12275:8:159","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":43107,"src":"12228:55:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":76534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12228:102:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76535,"nodeType":"ExpressionStatement","src":"12228:102:159"},{"assignments":[76537],"declarations":[{"constant":false,"id":76537,"mutability":"mutable","name":"transitionHash","nameLocation":"12353:14:159","nodeType":"VariableDeclaration","scope":76555,"src":"12345:22:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76536,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12345:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":76545,"initialValue":{"arguments":[{"id":76543,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76507,"src":"12421:10:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}],"expression":{"arguments":[{"expression":{"id":76539,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76507,"src":"12378:10:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12389:7:159","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":76933,"src":"12378:18:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76538,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73559,"src":"12370:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$73559_$","typeString":"type(contract IMirror)"}},"id":76541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12370:27:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73559","typeString":"contract IMirror"}},"id":76542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12398:22:159","memberName":"performStateTransition","nodeType":"MemberAccess","referencedDeclaration":73558,"src":"12370:50:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_StateTransition_$76948_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.StateTransition memory) external returns (bytes32)"}},"id":76544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12370:62:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"12345:87:159"},{"expression":{"id":76553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76546,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76490,"src":"12447:17:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76550,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76490,"src":"12480:17:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":76551,"name":"transitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76537,"src":"12499:14:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12467:5:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":76547,"name":"bytes","nodeType":"ElementaryTypeName","src":"12467:5:159","typeDescriptions":{}}},"id":76549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12473:6:159","memberName":"concat","nodeType":"MemberAccess","src":"12467:12:159","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12467:47:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"12447:67:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":76554,"nodeType":"ExpressionStatement","src":"12447:67:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76496,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76493,"src":"11953:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76497,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76484,"src":"11957:12:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$76948_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":76498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11970:6:159","memberName":"length","nodeType":"MemberAccess","src":"11957:19:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11953:23:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76556,"initializationExpression":{"assignments":[76493],"declarations":[{"constant":false,"id":76493,"mutability":"mutable","name":"i","nameLocation":"11946:1:159","nodeType":"VariableDeclaration","scope":76556,"src":"11938:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76492,"name":"uint256","nodeType":"ElementaryTypeName","src":"11938:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76495,"initialValue":{"hexValue":"30","id":76494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11950:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11938:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11978:3:159","subExpression":{"id":76500,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76493,"src":"11978:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76502,"nodeType":"ExpressionStatement","src":"11978:3:159"},"nodeType":"ForStatement","src":"11933:592:159"},{"expression":{"arguments":[{"id":76558,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76490,"src":"12552:17:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76557,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"12542:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12542:28:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":76488,"id":76560,"nodeType":"Return","src":"12535:35:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitTransitions","nameLocation":"11747:18:159","parameters":{"id":76485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76480,"mutability":"mutable","name":"router","nameLocation":"11782:6:159","nodeType":"VariableDeclaration","scope":76562,"src":"11766:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76479,"nodeType":"UserDefinedTypeName","pathNode":{"id":76478,"name":"Storage","nameLocations":["11766:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"11766:7:159"},"referencedDeclaration":73633,"src":"11766:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":76484,"mutability":"mutable","name":"_transitions","nameLocation":"11822:12:159","nodeType":"VariableDeclaration","scope":76562,"src":"11790:44:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$76948_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition[]"},"typeName":{"baseType":{"id":76482,"nodeType":"UserDefinedTypeName","pathNode":{"id":76481,"name":"Gear.StateTransition","nameLocations":["11790:4:159","11795:15:159"],"nodeType":"IdentifierPath","referencedDeclaration":76948,"src":"11790:20:159"},"referencedDeclaration":76948,"src":"11790:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_storage_ptr","typeString":"struct Gear.StateTransition"}},"id":76483,"nodeType":"ArrayTypeName","src":"11790:22:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$76948_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"}},"visibility":"internal"}],"src":"11765:70:159"},"returnParameters":{"id":76488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76487,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76562,"src":"11869:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76486,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11869:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11868:9:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76615,"nodeType":"FunctionDefinition","src":"12583:406:159","nodes":[],"body":{"id":76614,"nodeType":"Block","src":"12669:320:159","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"expression":{"id":76572,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76565,"src":"12687:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76573,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12694:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"12687:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12713:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"12687:36:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":76575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12724:6:159","memberName":"length","nodeType":"MemberAccess","src":"12687:43:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":76576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12734:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12687:48:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"72656d6f76652070726576696f75732076616c696461746f7273206669727374","id":76578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12737:34:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f6a03e209138d575bb162b4e280f18514af00259c854f4d737ad74345b1a440","typeString":"literal_string \"remove previous validators first\""},"value":"remove previous validators first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f6a03e209138d575bb162b4e280f18514af00259c854f4d737ad74345b1a440","typeString":"literal_string \"remove previous validators first\""}],"id":76571,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12679:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12679:93:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76580,"nodeType":"ExpressionStatement","src":"12679:93:159"},{"body":{"id":76604,"nodeType":"Block","src":"12832:90:159","statements":[{"expression":{"id":76602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":76592,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76565,"src":"12846:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76598,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12853:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"12846:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76599,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12872:16:159","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":76957,"src":"12846:42:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":76600,"indexExpression":{"baseExpression":{"id":76595,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76568,"src":"12889:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76597,"indexExpression":{"id":76596,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76582,"src":"12901:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12889:14:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12846:58:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":76601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12907:4:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"12846:65:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76603,"nodeType":"ExpressionStatement","src":"12846:65:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76585,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76582,"src":"12803:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76586,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76568,"src":"12807:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12819:6:159","memberName":"length","nodeType":"MemberAccess","src":"12807:18:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12803:22:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76605,"initializationExpression":{"assignments":[76582],"declarations":[{"constant":false,"id":76582,"mutability":"mutable","name":"i","nameLocation":"12796:1:159","nodeType":"VariableDeclaration","scope":76605,"src":"12788:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76581,"name":"uint256","nodeType":"ElementaryTypeName","src":"12788:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76584,"initialValue":{"hexValue":"30","id":76583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12800:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12788:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12827:3:159","subExpression":{"id":76589,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76582,"src":"12827:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76591,"nodeType":"ExpressionStatement","src":"12827:3:159"},"nodeType":"ForStatement","src":"12783:139:159"},{"expression":{"id":76612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":76606,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76565,"src":"12932:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76609,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12939:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"12932:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76610,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12958:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"12932:36:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76611,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76568,"src":"12971:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"12932:50:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":76613,"nodeType":"ExpressionStatement","src":"12932:50:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setValidators","nameLocation":"12592:14:159","parameters":{"id":76569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76565,"mutability":"mutable","name":"router","nameLocation":"12623:6:159","nodeType":"VariableDeclaration","scope":76615,"src":"12607:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76564,"nodeType":"UserDefinedTypeName","pathNode":{"id":76563,"name":"Storage","nameLocations":["12607:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"12607:7:159"},"referencedDeclaration":73633,"src":"12607:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":76568,"mutability":"mutable","name":"_validators","nameLocation":"12648:11:159","nodeType":"VariableDeclaration","scope":76615,"src":"12631:28:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":76566,"name":"address","nodeType":"ElementaryTypeName","src":"12631:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76567,"nodeType":"ArrayTypeName","src":"12631:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"12606:54:159"},"returnParameters":{"id":76570,"nodeType":"ParameterList","parameters":[],"src":"12669:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76653,"nodeType":"FunctionDefinition","src":"12995:318:159","nodes":[],"body":{"id":76652,"nodeType":"Block","src":"13054:259:159","nodes":[],"statements":[{"body":{"id":76645,"nodeType":"Block","src":"13138:115:159","statements":[{"expression":{"id":76643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13152:90:159","subExpression":{"baseExpression":{"expression":{"expression":{"id":76634,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76618,"src":"13159:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76635,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13166:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"13159:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76636,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13185:16:159","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":76957,"src":"13159:42:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":76642,"indexExpression":{"baseExpression":{"expression":{"expression":{"id":76637,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76618,"src":"13202:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76638,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13209:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"13202:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76639,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13228:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"13202:36:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":76641,"indexExpression":{"id":76640,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76622,"src":"13239:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13202:39:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13159:83:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76644,"nodeType":"ExpressionStatement","src":"13152:90:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76625,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76622,"src":"13084:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"expression":{"id":76626,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76618,"src":"13088:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76627,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13095:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"13088:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76628,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13114:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"13088:36:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":76629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13125:6:159","memberName":"length","nodeType":"MemberAccess","src":"13088:43:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13084:47:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76646,"initializationExpression":{"assignments":[76622],"declarations":[{"constant":false,"id":76622,"mutability":"mutable","name":"i","nameLocation":"13077:1:159","nodeType":"VariableDeclaration","scope":76646,"src":"13069:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76621,"name":"uint256","nodeType":"ElementaryTypeName","src":"13069:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76624,"initialValue":{"hexValue":"30","id":76623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13081:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13069:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13133:3:159","subExpression":{"id":76631,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76622,"src":"13133:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76633,"nodeType":"ExpressionStatement","src":"13133:3:159"},"nodeType":"ForStatement","src":"13064:189:159"},{"expression":{"id":76650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13263:43:159","subExpression":{"expression":{"expression":{"id":76647,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76618,"src":"13270:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76648,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13277:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"13270:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76649,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13296:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"13270:36:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76651,"nodeType":"ExpressionStatement","src":"13263:43:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_removeValidators","nameLocation":"13004:17:159","parameters":{"id":76619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76618,"mutability":"mutable","name":"router","nameLocation":"13038:6:159","nodeType":"VariableDeclaration","scope":76653,"src":"13022:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76617,"nodeType":"UserDefinedTypeName","pathNode":{"id":76616,"name":"Storage","nameLocations":["13022:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"13022:7:159"},"referencedDeclaration":73633,"src":"13022:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"13021:24:159"},"returnParameters":{"id":76620,"nodeType":"ParameterList","parameters":[],"src":"13054:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76666,"nodeType":"FunctionDefinition","src":"13319:192:159","nodes":[],"body":{"id":76665,"nodeType":"Block","src":"13384:127:159","nodes":[],"statements":[{"assignments":[76660],"declarations":[{"constant":false,"id":76660,"mutability":"mutable","name":"slot","nameLocation":"13402:4:159","nodeType":"VariableDeclaration","scope":76665,"src":"13394:12:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76659,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13394:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":76663,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76661,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76678,"src":"13409:15:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":76662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13409:17:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13394:32:159"},{"AST":{"nativeSrc":"13462:43:159","nodeType":"YulBlock","src":"13462:43:159","statements":[{"nativeSrc":"13476:19:159","nodeType":"YulAssignment","src":"13476:19:159","value":{"name":"slot","nativeSrc":"13491:4:159","nodeType":"YulIdentifier","src":"13491:4:159"},"variableNames":[{"name":"router.slot","nativeSrc":"13476:11:159","nodeType":"YulIdentifier","src":"13476:11:159"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":76657,"isOffset":false,"isSlot":true,"src":"13476:11:159","suffix":"slot","valueSize":1},{"declaration":76660,"isOffset":false,"isSlot":false,"src":"13491:4:159","valueSize":1}],"flags":["memory-safe"],"id":76664,"nodeType":"InlineAssembly","src":"13437:68:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_router","nameLocation":"13328:7:159","parameters":{"id":76654,"nodeType":"ParameterList","parameters":[],"src":"13335:2:159"},"returnParameters":{"id":76658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76657,"mutability":"mutable","name":"router","nameLocation":"13376:6:159","nodeType":"VariableDeclaration","scope":76666,"src":"13360:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76656,"nodeType":"UserDefinedTypeName","pathNode":{"id":76655,"name":"Storage","nameLocations":["13360:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"13360:7:159"},"referencedDeclaration":73633,"src":"13360:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"13359:24:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":76678,"nodeType":"FunctionDefinition","src":"13517:128:159","nodes":[],"body":{"id":76677,"nodeType":"Block","src":"13575:70:159","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":76673,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75398,"src":"13619:12:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76671,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44581,"src":"13592:11:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44581_$","typeString":"type(library StorageSlot)"}},"id":76672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13604:14:159","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":44319,"src":"13592:26:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$44274_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":76674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13592:40:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$44274_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":76675,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13633:5:159","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":44273,"src":"13592:46:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":76670,"id":76676,"nodeType":"Return","src":"13585:53:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nameLocation":"13526:15:159","parameters":{"id":76667,"nodeType":"ParameterList","parameters":[],"src":"13541:2:159"},"returnParameters":{"id":76670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76669,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76678,"src":"13566:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76668,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13566:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13565:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":76723,"nodeType":"FunctionDefinition","src":"13651:252:159","nodes":[],"body":{"id":76722,"nodeType":"Block","src":"13719:184:159","nodes":[],"statements":[{"assignments":[76686],"declarations":[{"constant":false,"id":76686,"mutability":"mutable","name":"slot","nameLocation":"13737:4:159","nodeType":"VariableDeclaration","scope":76722,"src":"13729:12:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76685,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13729:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":76712,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":76695,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76680,"src":"13789:9:159","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":76694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13783:5:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":76693,"name":"bytes","nodeType":"ElementaryTypeName","src":"13783:5:159","typeDescriptions":{}}},"id":76696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13783:16:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76692,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13773:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13773:27:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13765:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":76690,"name":"uint256","nodeType":"ElementaryTypeName","src":"13765:7:159","typeDescriptions":{}}},"id":76698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13765:36:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":76699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13804:1:159","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13765:40:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":76688,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13754:3:159","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":76689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13758:6:159","memberName":"encode","nodeType":"MemberAccess","src":"13754:10:159","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13754:52:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76687,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13744:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13744:63:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":76710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"13810:23:159","subExpression":{"arguments":[{"arguments":[{"hexValue":"30786666","id":76707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13827:4:159","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":76706,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13819:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":76705,"name":"uint256","nodeType":"ElementaryTypeName","src":"13819:7:159","typeDescriptions":{}}},"id":76708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13819:13:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76704,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13811:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":76703,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13811:7:159","typeDescriptions":{}}},"id":76709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13811:22:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13744:89:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13729:104:159"},{"expression":{"id":76720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":76716,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75398,"src":"13870:12:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76713,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44581,"src":"13843:11:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44581_$","typeString":"type(library StorageSlot)"}},"id":76715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13855:14:159","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":44319,"src":"13843:26:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$44274_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":76717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13843:40:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$44274_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":76718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13884:5:159","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":44273,"src":"13843:46:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76719,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76686,"src":"13892:4:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13843:53:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":76721,"nodeType":"ExpressionStatement","src":"13843:53:159"}]},"implemented":true,"kind":"function","modifiers":[{"id":76683,"kind":"modifierInvocation","modifierName":{"id":76682,"name":"onlyOwner","nameLocations":["13709:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":39282,"src":"13709:9:159"},"nodeType":"ModifierInvocation","src":"13709:9:159"}],"name":"_setStorageSlot","nameLocation":"13660:15:159","parameters":{"id":76681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76680,"mutability":"mutable","name":"namespace","nameLocation":"13690:9:159","nodeType":"VariableDeclaration","scope":76723,"src":"13676:23:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":76679,"name":"string","nodeType":"ElementaryTypeName","src":"13676:6:159","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13675:25:159"},"returnParameters":{"id":76684,"nodeType":"ParameterList","parameters":[],"src":"13719:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":75390,"name":"IRouter","nameLocations":["651:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73844,"src":"651:7:159"},"id":75391,"nodeType":"InheritanceSpecifier","src":"651:7:159"},{"baseName":{"id":75392,"name":"OwnableUpgradeable","nameLocations":["660:18:159"],"nodeType":"IdentifierPath","referencedDeclaration":39387,"src":"660:18:159"},"id":75393,"nodeType":"InheritanceSpecifier","src":"660:18:159"},{"baseName":{"id":75394,"name":"ReentrancyGuardTransient","nameLocations":["680:24:159"],"nodeType":"IdentifierPath","referencedDeclaration":44045,"src":"680:24:159"},"id":75395,"nodeType":"InheritanceSpecifier","src":"680:24:159"}],"canonicalName":"Router","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[76724,44045,39387,40535,39641,73844],"name":"Router","nameLocation":"641:6:159","scope":76725,"usedErrors":[39223,39228,39404,39407,43912,43918,43989,44912,44917,44922],"usedEvents":[39234,39412,73638,73645,73652,73659,73666,73669,73672]}],"license":"UNLICENSED"},"id":159} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"areValidators","inputs":[{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"codeState","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Gear.CodeState"}],"stateMutability":"view"},{"type":"function","name":"codesStates","inputs":[{"name":"_codesIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"uint8[]","internalType":"enum Gear.CodeState[]"}],"stateMutability":"view"},{"type":"function","name":"commitBlocks","inputs":[{"name":"_blockCommitments","type":"tuple[]","internalType":"struct Gear.BlockCommitment[]","components":[{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"previousCommittedBlock","type":"bytes32","internalType":"bytes32"},{"name":"predecessorBlock","type":"bytes32","internalType":"bytes32"},{"name":"transitions","type":"tuple[]","internalType":"struct Gear.StateTransition[]","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"inheritor","type":"bytes","internalType":"bytes"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueClaims","type":"tuple[]","internalType":"struct Gear.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 Gear.Message[]","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 Gear.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":"_codeCommitments","type":"tuple[]","internalType":"struct Gear.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":"computeSettings","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.ComputationSettings","components":[{"name":"threshold","type":"uint64","internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","internalType":"uint128"}]}],"stateMutability":"view"},{"type":"function","name":"createProgram","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProgramWithDecoder","inputs":[{"name":"_decoderImpl","type":"address","internalType":"address"},{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"genesisBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_mirror","type":"address","internalType":"address"},{"name":"_mirrorProxy","type":"address","internalType":"address"},{"name":"_wrappedVara","type":"address","internalType":"address"},{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isValidator","inputs":[{"name":"_validator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestCommittedBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"lookupGenesisHash","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mirrorImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"mirrorProxyImpl","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":"_programId","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"programsCodeIds","inputs":[{"name":"_programsIds","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":"setMirror","inputs":[{"name":"newMirror","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signingThresholdPercentage","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validatedCodesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"wrappedVara","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"BlockCommitted","inputs":[{"name":"hash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CodeGotValidated","inputs":[{"name":"codeId","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":"ComputationSettingsChanged","inputs":[{"name":"threshold","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","indexed":false,"internalType":"uint128"}],"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":"ValidatorsChanged","inputs":[],"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":"0x6080806040523460aa575f516020612a065f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b60405161295790816100af8239f35b6001600160401b0319166001600160401b039081175f516020612a065f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe610160806040526004361015610013575f80fd5b5f60a0525f3560e01c9081627a32e714611e42575080631c149d8a14611ce957806328e24b3d14611cbf5780633d43b41814611c6d578063527de0f914611be757806365ecfea214611bad5780636c2eb35014611921578063715018a6146118b257806382bdeaad146117a557806384d22a4f1461173b57806388f50cf0146117015780638b1edf1e146116365780638da5cb5b146116005780638f381dbe146115bb5780639067088e1461157357806396a2ddfa14611544578063baaf020114611445578063c13911e8146113fd578063c5a77c1314610a55578063c9f16a1114610a26578063ca1e7819146109ab578063e6fabc0914610971578063e7006a7414610857578063e97d3eb314610619578063ed612f8c146105ea578063edc87225146105b4578063efd81abc14610581578063f2fde38b1461055d578063f8453e7c146101bd5763facd743b1461016a575f80fd5b346101b75760203660031901126101b757610183611e82565b60095f5160206128e25f395f51905f5254019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b60a05180fd5b346101b75760a03660031901126101b7576101d6611e82565b6024356001600160a01b03811691908290036101b7576044356001600160a01b03811692908390036101b7576064356001600160a01b038116908190036101b7576084356001600160401b0381116101b757610236903690600401611eac565b915f5160206129025f395f51905f525460ff8160401c1615956001600160401b03821680159081610555575b600114908161054b575b159081610542575b5061052f5767ffffffffffffffff1982166001175f5160206129025f395f51905f52556102b79187610503575b506102aa612717565b6102b2612717565b61219e565b60409586516102c68882611fa5565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526102fa61220f565b5190205f1981019081116104eb5787519060208201908152602082526103208983611fa5565b60ff19915190201694855f5160206128e25f395f51905f5255610341612376565b80518755600187019063ffffffff60208201511669ffffffffffff000000008b845493015160201b169169ffffffffffffffffffff1916171790558288805161038981611f8a565b8381526020810185905201526004860180546001600160a01b03199081166001600160a01b0393841617909155600587018054821693831693909317909255600686018054909216921691909117905560078301805461ffff1916611a0a1790556103f382612019565b9161040086519384611fa5565b808352602083019060051b8201913683116101b757905b8282106104d3575050509061042e600a92826123bb565b610436612068565b506509184e72a0006020855161044b81611f5b565b639502f900815201520180546001600160c01b0319166d09184e72a000000000009502f90017905561047e575b60a05180f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f5160206129025f395f51905f5254165f5160206129025f395f51905f52555160018152a180610478565b602080916104e084611e98565b815201910190610417565b634e487b7160e01b60a051526011600452602460a051fd5b68ffffffffffffffffff191668010000000000000001175f5160206129025f395f51905f5255886102a1565b63f92ee8a960e01b60a05152600460a051fd5b90501589610274565b303b15915061026c565b889150610262565b346101b75760203660031901126101b757610478610579611e82565b6102b261220f565b346101b75760a0513660031901126101b757602061ffff60075f5160206128e25f395f51905f5254015416604051908152f35b346101b75760a0513660031901126101b75760206105e260075f5160206128e25f395f51905f52540161263f565b604051908152f35b346101b75760a0513660031901126101b757602060085f5160206128e25f395f51905f52540154604051908152f35b346101b75760403660031901126101b7576004356001600160401b0381116101b757366023820112156101b75780600401356001600160401b0381116101b7573660248260061b840101116101b7576024356001600160401b0381116101b757610687903690600401611eac565b905f5160206128e25f395f51905f5254936106a485541515611ee9565b60a051600b860193909260605b8685101561083b5760a051508460061b84016024810135918260a051528760205260ff604060a0512054166003811015610823576001036107c05760019261076f604461079c94016107028161216f565b156107a45760a0805184905260208c90525160409020805460ff19166002179055600e8d0180546107329061217c565b90555b61073e8161216f565b15157f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020604051868152a261216f565b6040519060208201928352151560f81b604082015260218152610793604182611fa5565b519020906120f6565b9401936106b1565b8260a051528a602052604060a0512060ff198154169055610735565b60405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b6064820152608490fd5b634e487b7160e01b60a051526021600452602460a051fd5b9161085291886104789460208151910120906124f5565b612123565b346101b75760603660031901126101b757610870611e82565b602435906108b8604435916108858385612242565b9360405193602085019182526040850152604084526108a5606085611fa5565b92519092206001600160a01b0392612742565b1690813b156101b75760405163204a7f0760e21b815260a0518160048183875af1801561094b57610958575b506001600160a01b031690813b156101b75760405163485cc95560e01b8152336004820152602481019190915260a0518160448183865af1801561094b57610932575b602082604051908152f35b60a05161093e91611fa5565b60a0516101b75781610927565b6040513d60a051823e3d90fd5b60a05161096491611fa5565b60a0516101b757826108e4565b346101b75760a0513660031901126101b7575f5160206128e25f395f51905f5254600401546040516001600160a01b039091168152602090f35b346101b75760a0513660031901126101b7576109d760085f5160206128e25f395f51905f525401611fc6565b60405180916020820160208352815180915260206040840192019060a0515b818110610a04575050500390f35b82516001600160a01b03168452859450602093840193909201916001016109f6565b346101b75760a0513660031901126101b757602060025f5160206128e25f395f51905f52540154604051908152f35b346101b75760403660031901126101b7576004356001600160401b0381116101b757610a85903690600401611eac565b6080526024356001600160401b0381116101b757610aa7903690600401611eac565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f009291925c6113ea578260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f5160206128e25f395f51905f525461010052610b1761010051541515611ee9565b60a05160e0526060925b60805160e05110156113a65760e05160051b81013536829003609e19018112156101b757810161012052600261010051015460406101205101350361135357610b70606061012051013561266f565b156112ff576020610b858161012051016124e2565b65ffffffffffff60405191610b9983611f5b565b610120513583521691829101526101205135600261010051015565ffffffffffff19600361010051015416176003610100510155608061012051013561014052601e19610120513603016101405112156101b7576001600160401b0361014051610120510135116101b757610140516101205101803560051b36036020909101136101b75760a05160c05260605b6101405161012051013560c051101561124f57610140516101205160c05191013681900360de190160059290921b016020013512156101b757610c8860208060c05160051b6101405161012051010101356101405161012051010101612080565b6001600160a01b03165f90815261010051600c016020526040902054156111f25760018060a01b03600661010051015416610ce160208060c05160051b6101405161012051010101356101405161012051010101612080565b60c05161014051610120510160059190911b81016020013501608001356001600160801b03811681036101b75760405163a9059cbb60e01b81526001600160a01b0390921660048301526001600160801b0316602482015260a0519091602091839160449183915af1801561094b576111ba575b5060018060a01b03610d8560208060c05160051b6101405161012051010101356101405161012051010101612080565b1690604051916350131bd960e11b83526020600484015260018060a01b03610dcb60208060c05160051b6101405161012051010101356101405161012051010101611e98565b16602484015260c080516101408051610120805160406020600596871b9290940191820184013590910101356044890152935191519351610e3394610e2294606094901b91019081018201350191820191016126b2565b60c0606487015260e48601916126e3565b6001600160801b03610e646080602060c05160051b6101405161012051010101356101405161012051010101612703565b16608485015260c05161014051610120510160059190911b8101602001350160a081013590603e193691909103018112156101b7576020908160c05160051b610140516101205101010135610140516101205101010101906001600160401b038235116101b7576060823502360360208301136101b7578481036023190160a48601528135815260a051602091820192918201915b8035821061117057505060c0805161014051610120510160059190911b81016020013501908101359150603e193691909103018112156101b75760c0516101405161012051602060059390931b91019081018201350182016040810193916001600160401b03910135116101b75760208060c05160051b610140516101205101010135610140516101205101018301013560051b9081360384136101b757908693926023198584030160c486015260208060c05160051b61014051610120510101013561014051610120510101820101358352602080840192840101939260a051915b60208060c05160051b61014051610120510101013561014051610120510101820101358310611075575050505050918180602094039160a051905af190811561094b5760a05191611040575b61103292506120f6565b60c080516001019052610c27565b90506020823d821161106d575b8161105a60209383611fa5565b810103126101b757611032915190611028565b3d915061104d565b919395509193601f19838203018552853560de1960208060c05160051b610140516101205101010135610140516101205101018501013603018112156101b75760208060c05160051b61014051610120510101013561014051610120510101840101019060c061111b61110c602085018035855260018060a01b036110fc60408801611e98565b16602086015260608601906126b2565b836040860152838501916126e3565b926001600160801b0361113060808301612703565b16606084015260a0810135608084015201359063ffffffff60e01b82168092036101b75760a0015288959094602091820194910192600190910191610fdc565b90919260608060019286358152838060a01b0361118f60208901611e98565b1660208201526001600160801b036111a960408901612703565b166040820152019401920190610ef9565b6020813d82116111ea575b816111d260209383611fa5565b810103126101b757518015158114610d555760a05180fd5b3d91506111c5565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b936112ee91939294602081519101207fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e602060405161012051358152a161129b602061012051016124e2565b906040519060208201926101205135845265ffffffffffff60d01b9060d01b166040830152604061012051013560468301526060610120510135606683015260868201526086815261079360a682611fa5565b92600160e0510160e0529091610b21565b60405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b6064820152608490fd5b6113bf61085284848760208151910120610100516124f5565b60a0517f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d60a05180f35b633ee5aeb560e01b60a05152600460a051fd5b346101b75760203660031901126101b757600b5f5160206128e25f395f51905f52540160043560a05152602052602060ff604060a0512054166114436040518092611edc565bf35b346101b75760203660031901126101b7576004356001600160401b0381116101b757611475903690600401611eac565b5f5160206128e25f395f51905f52549161148e82612019565b9261149c6040519485611fa5565b8284526114a883612019565b602085019390601f1901368537600c60a0519201915b81811061150b5784866040519182916020830190602084525180915260408301919060a0515b8181106114f2575050500390f35b82518452859450602093840193909201916001016114e4565b8061152161151c6001938588612030565b612080565b828060a01b03165f528360205260405f205461153d8289612054565b52016114be565b346101b75760a0513660031901126101b7576020600d5f5160206128e25f395f51905f52540154604051908152f35b346101b75760203660031901126101b75761158c611e82565b600c5f5160206128e25f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b346101b75760203660031901126101b7576004356001600160401b0381116101b7576115f66115f06020923690600401611eac565b90612094565b6040519015158152f35b346101b75760a0513660031901126101b7575f5160206128c25f395f51905f52546040516001600160a01b039091168152602090f35b346101b75760a0513660031901126101b7575f5160206128e25f395f51905f525480546116bc5763ffffffff60018201541640908115611677575560a05180f35b60405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e6573697320686173680000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c72656164792073657400000000000000006044820152606490fd5b346101b75760a0513660031901126101b7575f5160206128e25f395f51905f5254600601546040516001600160a01b039091168152602090f35b346101b75760a0513660031901126101b757611755612068565b506040600a5f5160206128e25f395f51905f5254016001600160801b0382519161177e83611f5b565b548160206001600160401b038316948581520191851c168152835192835251166020820152f35b346101b75760203660031901126101b7576004356001600160401b0381116101b7576117d5903690600401611eac565b5f5160206128e25f395f51905f5254916117ee82612019565b926117fc6040519485611fa5565b82845261180883612019565b602085019390601f1901368537600b60a0519201915b8181106118755784866040519182916020830190602084525180915260408301919060a0515b818110611852575050500390f35b91935091602080826118676001948851611edc565b019401910191849392611844565b611880818386612030565b3560a051528260205260ff604060a0512054169061189e8188612054565b91600381101561082357600192520161181e565b346101b75760a0513660031901126101b7576118cc61220f565b5f5160206128c25f395f51905f5280546001600160a01b0319811690915560a051906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a360a05180f35b346101b75760a0513660031901126101b75761193b61220f565b5f5160206129025f395f51905f525460ff8160401c168015611b99575b61052f5768ffffffffffffffffff191668010000000000000002175f5160206129025f395f51905f52555f5160206128e25f395f51905f52546040805161199f8282611fa5565b6017815260208101907f726f757465722e73746f726167652e526f75746572563200000000000000000082526119d361220f565b5190205f198101919082116104eb577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d292600a80602094845190868201908152868252611a208683611fa5565b60ff19915190201692835f5160206128e25f395f51905f5255611a41612376565b80518555600185019063ffffffff888201511669ffffffffffff000000008884549301518a1b169169ffffffffffffffffffff191617179055600481016004850190808203611b4b575b505061ffff600782015416600785019061ffff19825416179055611aba611ab460088301611fc6565b856123bb565b01910190808203611af9575b505060ff60401b195f5160206129025f395f51905f5254165f5160206129025f395f51905f52555160028152a160a05180f35b806001600160401b03806001600160801b03935416166001600160401b031984541617835554831c16600160401b600160c01b03825491841b1690600160401b600160c01b0319161790558380611ac6565b5481546001600160a01b03199081166001600160a01b039283161790925560058381015490870180548416918316919091179055600680840154908701805490931691161790558780611a8b565b5060026001600160401b0382161015611958565b346101b75760a0513660031901126101b7575f5160206128e25f395f51905f5254600501546040516001600160a01b039091168152602090f35b34611c6957611c07611bf836611e6c565b6001600160a01b039291612242565b16803b15611c69576040519063485cc95560e01b82523360048301525f60248301525f8260448183855af1918215611c5e57602092611c4a575b50604051908152f35b5f611c5491611fa5565b5f60a05282611c41565b6040513d5f823e3d90fd5b5f80fd5b34611c69576020366003190112611c6957611c86611e82565b611c8e61220f565b5f5160206128e25f395f51905f525460040180546001600160a01b0319166001600160a01b03909216919091179055005b34611c69575f366003190112611c695760205f5160206128e25f395f51905f525454604051908152f35b34611c6957611cf736611e6c565b908115801590611e38575b15611dfd57600b5f5160206128e25f395f51905f5254611d2481541515611ee9565b0190805f528160205260ff60405f2054166003811015611de957611d88577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b6044820152606490fd5b505f491515611d02565b34611c69575f366003190112611c6957602090600e5f5160206128e25f395f51905f525401548152f35b6040906003190112611c69576004359060243590565b600435906001600160a01b0382168203611c6957565b35906001600160a01b0382168203611c6957565b9181601f84011215611c69578235916001600160401b038311611c69576020808501948460051b010111611c6957565b906003821015611de95752565b15611ef057565b60405162461bcd60e51b815260206004820152603860248201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60448201527f6f6b757047656e657369734861736828296020666972737400000000000000006064820152608490fd5b604081019081106001600160401b03821117611f7657604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117611f7657604052565b90601f801991011681019081106001600160401b03821117611f7657604052565b90604051918281549182825260208201905f5260205f20925f5b818110611ff7575050611ff592500383611fa5565b565b84546001600160a01b0316835260019485019487945060209093019201611fe0565b6001600160401b038111611f765760051b60200190565b91908110156120405760051b0190565b634e487b7160e01b5f52603260045260245ffd5b80518210156120405760209160051b010190565b6040519061207582611f5b565b5f6020838281520152565b356001600160a01b0381168103611c695790565b5f5160206128e25f395f51905f5254600901905f5b8381106120b95750505050600190565b6120c761151c828685612030565b6001600160a01b03165f9081526020849052604090205460ff16156120ee576001016120a9565b505050505f90565b602080611ff5928195946040519682889351918291018585015e8201908382015203018085520183611fa5565b1561212a57565b60405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c656400006044820152606490fd5b358015158103611c695790565b5f19811461218a5760010190565b634e487b7160e01b5f52601160045260245ffd5b6001600160a01b031680156121fc575f5160206128c25f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f5160206128c25f395f51905f52546001600160a01b0316330361222f57565b63118cdaa760e01b5f523360045260245ffd5b5f5160206128e25f395f51905f52549161225e83541515611ee9565b815f52600b830160205260ff60405f2054166003811015611de95760020361231a576122bc600d9160018060a01b036005860154169060405160208101918683526040820152604081526122b3606082611fa5565b51902090612742565b9260018060a01b0384165f52600c81016020528260405f2055016122e0815461217c565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a290565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f6040805161238481611f8a565b828152826020820152015260405161239b81611f8a565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b906008820190815461249e579091600901905f5b8151811015612410576001906001600160a01b036123ed8285612054565b5116828060a01b03165f528360205260405f208260ff19825416179055016123cf565b5080519291506001600160401b038311611f7657680100000000000000008311611f76578154838355808410612478575b50602001905f5260205f205f5b83811061245b5750505050565b82516001600160a01b03168183015560209092019160010161244e565b825f528360205f2091820191015b8181106124935750612441565b5f8155600101612486565b606460405162461bcd60e51b815260206004820152602060248201527f72656d6f76652070726576696f75732076616c696461746f72732066697273746044820152fd5b3565ffffffffffff81168103611c695790565b9190916125046007820161263f565b9260405190602082019081526020825261251f604083611fa5565b61255b603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282611fa5565b5190205f9260095f9301925b86811015612634578060051b820135601e1983360301811215611c695782018035906001600160401b038211611c695760208101908236038213611c6957604051906125bd601f8501601f191660200183611fa5565b8382526020843692010111611c69575f6020846125ef956125e6958386013783010152856127a5565b909291926127df565b6001600160a01b03165f9081526020859052604090205460ff16612616575b600101612567565b936126209061217c565b9385850361260e5750505050505050600190565b505050505050505f90565b61ffff60018201549154169081810291818304149015171561218a5761270f810180911161218a57612710900490565b905f19430143811161218a57805b612688575b505f9150565b804083810361269957506001925050565b156126ad57801561218a575f19018061267d565b612682565b9035601e1982360301811215611c695701602081359101916001600160401b038211611c69578136038313611c6957565b908060209392818452848401375f828201840152601f01601f1916010190565b35906001600160801b0382168203611c6957565b60ff5f5160206129025f395f51905f525460401c161561273357565b631afcd79f60e31b5f5260045ffd5b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b0382161561279657565b63b06ebf3d60e01b5f5260045ffd5b81519190604183036127d5576127ce9250602082015190606060408401519301515f1a9061283f565b9192909190565b50505f9160029190565b6004811015611de957806127f1575050565b600181036128085763f645eedf60e01b5f5260045ffd5b60028103612823575063fce698f760e01b5f5260045260245ffd5b60031461282d5750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116128b6579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611c5e575f516001600160a01b038116156128ac57905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122022567f16253df85a5652868df83a8226e63a2e2f80288d5ab19c33085d2a682364736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"632:13273:120:-:0;;;;;;;-1:-1:-1;;;;;;;;;;;632:13273:120;;;;;;7896:76:25;;-1:-1:-1;;;;;;;;;;;632:13273:120;;7985:34:25;7981:146;;-1:-1:-1;632:13273:120;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;632:13273:120;-1:-1:-1;;;;;632:13273:120;;;-1:-1:-1;;;;;;;;;;;632:13273:120;;;8087:29:25;;632:13273:120;;8087:29:25;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:25;;-1:-1:-1;7938:23:25;632:13273:120;;;","linkReferences":{}},"deployedBytecode":{"object":"0x610160806040526004361015610013575f80fd5b5f60a0525f3560e01c9081627a32e714611e42575080631c149d8a14611ce957806328e24b3d14611cbf5780633d43b41814611c6d578063527de0f914611be757806365ecfea214611bad5780636c2eb35014611921578063715018a6146118b257806382bdeaad146117a557806384d22a4f1461173b57806388f50cf0146117015780638b1edf1e146116365780638da5cb5b146116005780638f381dbe146115bb5780639067088e1461157357806396a2ddfa14611544578063baaf020114611445578063c13911e8146113fd578063c5a77c1314610a55578063c9f16a1114610a26578063ca1e7819146109ab578063e6fabc0914610971578063e7006a7414610857578063e97d3eb314610619578063ed612f8c146105ea578063edc87225146105b4578063efd81abc14610581578063f2fde38b1461055d578063f8453e7c146101bd5763facd743b1461016a575f80fd5b346101b75760203660031901126101b757610183611e82565b60095f5160206128e25f395f51905f5254019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b60a05180fd5b346101b75760a03660031901126101b7576101d6611e82565b6024356001600160a01b03811691908290036101b7576044356001600160a01b03811692908390036101b7576064356001600160a01b038116908190036101b7576084356001600160401b0381116101b757610236903690600401611eac565b915f5160206129025f395f51905f525460ff8160401c1615956001600160401b03821680159081610555575b600114908161054b575b159081610542575b5061052f5767ffffffffffffffff1982166001175f5160206129025f395f51905f52556102b79187610503575b506102aa612717565b6102b2612717565b61219e565b60409586516102c68882611fa5565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526102fa61220f565b5190205f1981019081116104eb5787519060208201908152602082526103208983611fa5565b60ff19915190201694855f5160206128e25f395f51905f5255610341612376565b80518755600187019063ffffffff60208201511669ffffffffffff000000008b845493015160201b169169ffffffffffffffffffff1916171790558288805161038981611f8a565b8381526020810185905201526004860180546001600160a01b03199081166001600160a01b0393841617909155600587018054821693831693909317909255600686018054909216921691909117905560078301805461ffff1916611a0a1790556103f382612019565b9161040086519384611fa5565b808352602083019060051b8201913683116101b757905b8282106104d3575050509061042e600a92826123bb565b610436612068565b506509184e72a0006020855161044b81611f5b565b639502f900815201520180546001600160c01b0319166d09184e72a000000000009502f90017905561047e575b60a05180f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f5160206129025f395f51905f5254165f5160206129025f395f51905f52555160018152a180610478565b602080916104e084611e98565b815201910190610417565b634e487b7160e01b60a051526011600452602460a051fd5b68ffffffffffffffffff191668010000000000000001175f5160206129025f395f51905f5255886102a1565b63f92ee8a960e01b60a05152600460a051fd5b90501589610274565b303b15915061026c565b889150610262565b346101b75760203660031901126101b757610478610579611e82565b6102b261220f565b346101b75760a0513660031901126101b757602061ffff60075f5160206128e25f395f51905f5254015416604051908152f35b346101b75760a0513660031901126101b75760206105e260075f5160206128e25f395f51905f52540161263f565b604051908152f35b346101b75760a0513660031901126101b757602060085f5160206128e25f395f51905f52540154604051908152f35b346101b75760403660031901126101b7576004356001600160401b0381116101b757366023820112156101b75780600401356001600160401b0381116101b7573660248260061b840101116101b7576024356001600160401b0381116101b757610687903690600401611eac565b905f5160206128e25f395f51905f5254936106a485541515611ee9565b60a051600b860193909260605b8685101561083b5760a051508460061b84016024810135918260a051528760205260ff604060a0512054166003811015610823576001036107c05760019261076f604461079c94016107028161216f565b156107a45760a0805184905260208c90525160409020805460ff19166002179055600e8d0180546107329061217c565b90555b61073e8161216f565b15157f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020604051868152a261216f565b6040519060208201928352151560f81b604082015260218152610793604182611fa5565b519020906120f6565b9401936106b1565b8260a051528a602052604060a0512060ff198154169055610735565b60405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b6064820152608490fd5b634e487b7160e01b60a051526021600452602460a051fd5b9161085291886104789460208151910120906124f5565b612123565b346101b75760603660031901126101b757610870611e82565b602435906108b8604435916108858385612242565b9360405193602085019182526040850152604084526108a5606085611fa5565b92519092206001600160a01b0392612742565b1690813b156101b75760405163204a7f0760e21b815260a0518160048183875af1801561094b57610958575b506001600160a01b031690813b156101b75760405163485cc95560e01b8152336004820152602481019190915260a0518160448183865af1801561094b57610932575b602082604051908152f35b60a05161093e91611fa5565b60a0516101b75781610927565b6040513d60a051823e3d90fd5b60a05161096491611fa5565b60a0516101b757826108e4565b346101b75760a0513660031901126101b7575f5160206128e25f395f51905f5254600401546040516001600160a01b039091168152602090f35b346101b75760a0513660031901126101b7576109d760085f5160206128e25f395f51905f525401611fc6565b60405180916020820160208352815180915260206040840192019060a0515b818110610a04575050500390f35b82516001600160a01b03168452859450602093840193909201916001016109f6565b346101b75760a0513660031901126101b757602060025f5160206128e25f395f51905f52540154604051908152f35b346101b75760403660031901126101b7576004356001600160401b0381116101b757610a85903690600401611eac565b6080526024356001600160401b0381116101b757610aa7903690600401611eac565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f009291925c6113ea578260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f5160206128e25f395f51905f525461010052610b1761010051541515611ee9565b60a05160e0526060925b60805160e05110156113a65760e05160051b81013536829003609e19018112156101b757810161012052600261010051015460406101205101350361135357610b70606061012051013561266f565b156112ff576020610b858161012051016124e2565b65ffffffffffff60405191610b9983611f5b565b610120513583521691829101526101205135600261010051015565ffffffffffff19600361010051015416176003610100510155608061012051013561014052601e19610120513603016101405112156101b7576001600160401b0361014051610120510135116101b757610140516101205101803560051b36036020909101136101b75760a05160c05260605b6101405161012051013560c051101561124f57610140516101205160c05191013681900360de190160059290921b016020013512156101b757610c8860208060c05160051b6101405161012051010101356101405161012051010101612080565b6001600160a01b03165f90815261010051600c016020526040902054156111f25760018060a01b03600661010051015416610ce160208060c05160051b6101405161012051010101356101405161012051010101612080565b60c05161014051610120510160059190911b81016020013501608001356001600160801b03811681036101b75760405163a9059cbb60e01b81526001600160a01b0390921660048301526001600160801b0316602482015260a0519091602091839160449183915af1801561094b576111ba575b5060018060a01b03610d8560208060c05160051b6101405161012051010101356101405161012051010101612080565b1690604051916350131bd960e11b83526020600484015260018060a01b03610dcb60208060c05160051b6101405161012051010101356101405161012051010101611e98565b16602484015260c080516101408051610120805160406020600596871b9290940191820184013590910101356044890152935191519351610e3394610e2294606094901b91019081018201350191820191016126b2565b60c0606487015260e48601916126e3565b6001600160801b03610e646080602060c05160051b6101405161012051010101356101405161012051010101612703565b16608485015260c05161014051610120510160059190911b8101602001350160a081013590603e193691909103018112156101b7576020908160c05160051b610140516101205101010135610140516101205101010101906001600160401b038235116101b7576060823502360360208301136101b7578481036023190160a48601528135815260a051602091820192918201915b8035821061117057505060c0805161014051610120510160059190911b81016020013501908101359150603e193691909103018112156101b75760c0516101405161012051602060059390931b91019081018201350182016040810193916001600160401b03910135116101b75760208060c05160051b610140516101205101010135610140516101205101018301013560051b9081360384136101b757908693926023198584030160c486015260208060c05160051b61014051610120510101013561014051610120510101820101358352602080840192840101939260a051915b60208060c05160051b61014051610120510101013561014051610120510101820101358310611075575050505050918180602094039160a051905af190811561094b5760a05191611040575b61103292506120f6565b60c080516001019052610c27565b90506020823d821161106d575b8161105a60209383611fa5565b810103126101b757611032915190611028565b3d915061104d565b919395509193601f19838203018552853560de1960208060c05160051b610140516101205101010135610140516101205101018501013603018112156101b75760208060c05160051b61014051610120510101013561014051610120510101840101019060c061111b61110c602085018035855260018060a01b036110fc60408801611e98565b16602086015260608601906126b2565b836040860152838501916126e3565b926001600160801b0361113060808301612703565b16606084015260a0810135608084015201359063ffffffff60e01b82168092036101b75760a0015288959094602091820194910192600190910191610fdc565b90919260608060019286358152838060a01b0361118f60208901611e98565b1660208201526001600160801b036111a960408901612703565b166040820152019401920190610ef9565b6020813d82116111ea575b816111d260209383611fa5565b810103126101b757518015158114610d555760a05180fd5b3d91506111c5565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b936112ee91939294602081519101207fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e602060405161012051358152a161129b602061012051016124e2565b906040519060208201926101205135845265ffffffffffff60d01b9060d01b166040830152604061012051013560468301526060610120510135606683015260868201526086815261079360a682611fa5565b92600160e0510160e0529091610b21565b60405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b6064820152608490fd5b6113bf61085284848760208151910120610100516124f5565b60a0517f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d60a05180f35b633ee5aeb560e01b60a05152600460a051fd5b346101b75760203660031901126101b757600b5f5160206128e25f395f51905f52540160043560a05152602052602060ff604060a0512054166114436040518092611edc565bf35b346101b75760203660031901126101b7576004356001600160401b0381116101b757611475903690600401611eac565b5f5160206128e25f395f51905f52549161148e82612019565b9261149c6040519485611fa5565b8284526114a883612019565b602085019390601f1901368537600c60a0519201915b81811061150b5784866040519182916020830190602084525180915260408301919060a0515b8181106114f2575050500390f35b82518452859450602093840193909201916001016114e4565b8061152161151c6001938588612030565b612080565b828060a01b03165f528360205260405f205461153d8289612054565b52016114be565b346101b75760a0513660031901126101b7576020600d5f5160206128e25f395f51905f52540154604051908152f35b346101b75760203660031901126101b75761158c611e82565b600c5f5160206128e25f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b346101b75760203660031901126101b7576004356001600160401b0381116101b7576115f66115f06020923690600401611eac565b90612094565b6040519015158152f35b346101b75760a0513660031901126101b7575f5160206128c25f395f51905f52546040516001600160a01b039091168152602090f35b346101b75760a0513660031901126101b7575f5160206128e25f395f51905f525480546116bc5763ffffffff60018201541640908115611677575560a05180f35b60405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e6573697320686173680000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c72656164792073657400000000000000006044820152606490fd5b346101b75760a0513660031901126101b7575f5160206128e25f395f51905f5254600601546040516001600160a01b039091168152602090f35b346101b75760a0513660031901126101b757611755612068565b506040600a5f5160206128e25f395f51905f5254016001600160801b0382519161177e83611f5b565b548160206001600160401b038316948581520191851c168152835192835251166020820152f35b346101b75760203660031901126101b7576004356001600160401b0381116101b7576117d5903690600401611eac565b5f5160206128e25f395f51905f5254916117ee82612019565b926117fc6040519485611fa5565b82845261180883612019565b602085019390601f1901368537600b60a0519201915b8181106118755784866040519182916020830190602084525180915260408301919060a0515b818110611852575050500390f35b91935091602080826118676001948851611edc565b019401910191849392611844565b611880818386612030565b3560a051528260205260ff604060a0512054169061189e8188612054565b91600381101561082357600192520161181e565b346101b75760a0513660031901126101b7576118cc61220f565b5f5160206128c25f395f51905f5280546001600160a01b0319811690915560a051906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a360a05180f35b346101b75760a0513660031901126101b75761193b61220f565b5f5160206129025f395f51905f525460ff8160401c168015611b99575b61052f5768ffffffffffffffffff191668010000000000000002175f5160206129025f395f51905f52555f5160206128e25f395f51905f52546040805161199f8282611fa5565b6017815260208101907f726f757465722e73746f726167652e526f75746572563200000000000000000082526119d361220f565b5190205f198101919082116104eb577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d292600a80602094845190868201908152868252611a208683611fa5565b60ff19915190201692835f5160206128e25f395f51905f5255611a41612376565b80518555600185019063ffffffff888201511669ffffffffffff000000008884549301518a1b169169ffffffffffffffffffff191617179055600481016004850190808203611b4b575b505061ffff600782015416600785019061ffff19825416179055611aba611ab460088301611fc6565b856123bb565b01910190808203611af9575b505060ff60401b195f5160206129025f395f51905f5254165f5160206129025f395f51905f52555160028152a160a05180f35b806001600160401b03806001600160801b03935416166001600160401b031984541617835554831c16600160401b600160c01b03825491841b1690600160401b600160c01b0319161790558380611ac6565b5481546001600160a01b03199081166001600160a01b039283161790925560058381015490870180548416918316919091179055600680840154908701805490931691161790558780611a8b565b5060026001600160401b0382161015611958565b346101b75760a0513660031901126101b7575f5160206128e25f395f51905f5254600501546040516001600160a01b039091168152602090f35b34611c6957611c07611bf836611e6c565b6001600160a01b039291612242565b16803b15611c69576040519063485cc95560e01b82523360048301525f60248301525f8260448183855af1918215611c5e57602092611c4a575b50604051908152f35b5f611c5491611fa5565b5f60a05282611c41565b6040513d5f823e3d90fd5b5f80fd5b34611c69576020366003190112611c6957611c86611e82565b611c8e61220f565b5f5160206128e25f395f51905f525460040180546001600160a01b0319166001600160a01b03909216919091179055005b34611c69575f366003190112611c695760205f5160206128e25f395f51905f525454604051908152f35b34611c6957611cf736611e6c565b908115801590611e38575b15611dfd57600b5f5160206128e25f395f51905f5254611d2481541515611ee9565b0190805f528160205260ff60405f2054166003811015611de957611d88577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b6044820152606490fd5b505f491515611d02565b34611c69575f366003190112611c6957602090600e5f5160206128e25f395f51905f525401548152f35b6040906003190112611c69576004359060243590565b600435906001600160a01b0382168203611c6957565b35906001600160a01b0382168203611c6957565b9181601f84011215611c69578235916001600160401b038311611c69576020808501948460051b010111611c6957565b906003821015611de95752565b15611ef057565b60405162461bcd60e51b815260206004820152603860248201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60448201527f6f6b757047656e657369734861736828296020666972737400000000000000006064820152608490fd5b604081019081106001600160401b03821117611f7657604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117611f7657604052565b90601f801991011681019081106001600160401b03821117611f7657604052565b90604051918281549182825260208201905f5260205f20925f5b818110611ff7575050611ff592500383611fa5565b565b84546001600160a01b0316835260019485019487945060209093019201611fe0565b6001600160401b038111611f765760051b60200190565b91908110156120405760051b0190565b634e487b7160e01b5f52603260045260245ffd5b80518210156120405760209160051b010190565b6040519061207582611f5b565b5f6020838281520152565b356001600160a01b0381168103611c695790565b5f5160206128e25f395f51905f5254600901905f5b8381106120b95750505050600190565b6120c761151c828685612030565b6001600160a01b03165f9081526020849052604090205460ff16156120ee576001016120a9565b505050505f90565b602080611ff5928195946040519682889351918291018585015e8201908382015203018085520183611fa5565b1561212a57565b60405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c656400006044820152606490fd5b358015158103611c695790565b5f19811461218a5760010190565b634e487b7160e01b5f52601160045260245ffd5b6001600160a01b031680156121fc575f5160206128c25f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f5160206128c25f395f51905f52546001600160a01b0316330361222f57565b63118cdaa760e01b5f523360045260245ffd5b5f5160206128e25f395f51905f52549161225e83541515611ee9565b815f52600b830160205260ff60405f2054166003811015611de95760020361231a576122bc600d9160018060a01b036005860154169060405160208101918683526040820152604081526122b3606082611fa5565b51902090612742565b9260018060a01b0384165f52600c81016020528260405f2055016122e0815461217c565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a290565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f6040805161238481611f8a565b828152826020820152015260405161239b81611f8a565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b906008820190815461249e579091600901905f5b8151811015612410576001906001600160a01b036123ed8285612054565b5116828060a01b03165f528360205260405f208260ff19825416179055016123cf565b5080519291506001600160401b038311611f7657680100000000000000008311611f76578154838355808410612478575b50602001905f5260205f205f5b83811061245b5750505050565b82516001600160a01b03168183015560209092019160010161244e565b825f528360205f2091820191015b8181106124935750612441565b5f8155600101612486565b606460405162461bcd60e51b815260206004820152602060248201527f72656d6f76652070726576696f75732076616c696461746f72732066697273746044820152fd5b3565ffffffffffff81168103611c695790565b9190916125046007820161263f565b9260405190602082019081526020825261251f604083611fa5565b61255b603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282611fa5565b5190205f9260095f9301925b86811015612634578060051b820135601e1983360301811215611c695782018035906001600160401b038211611c695760208101908236038213611c6957604051906125bd601f8501601f191660200183611fa5565b8382526020843692010111611c69575f6020846125ef956125e6958386013783010152856127a5565b909291926127df565b6001600160a01b03165f9081526020859052604090205460ff16612616575b600101612567565b936126209061217c565b9385850361260e5750505050505050600190565b505050505050505f90565b61ffff60018201549154169081810291818304149015171561218a5761270f810180911161218a57612710900490565b905f19430143811161218a57805b612688575b505f9150565b804083810361269957506001925050565b156126ad57801561218a575f19018061267d565b612682565b9035601e1982360301811215611c695701602081359101916001600160401b038211611c69578136038313611c6957565b908060209392818452848401375f828201840152601f01601f1916010190565b35906001600160801b0382168203611c6957565b60ff5f5160206129025f395f51905f525460401c161561273357565b631afcd79f60e31b5f5260045ffd5b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b0382161561279657565b63b06ebf3d60e01b5f5260045ffd5b81519190604183036127d5576127ce9250602082015190606060408401519301515f1a9061283f565b9192909190565b50505f9160029190565b6004811015611de957806127f1575050565b600181036128085763f645eedf60e01b5f5260045ffd5b60028103612823575063fce698f760e01b5f5260045260245ffd5b60031461282d5750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116128b6579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611c5e575f516001600160a01b038116156128ac57905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122022567f16253df85a5652868df83a8226e63a2e2f80288d5ab19c33085d2a682364736f6c634300081c0033","sourceMap":"632:13273:120:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;;:::i;:::-;3380:45;-1:-1:-1;;;;;;;;;;;632:13273:120;3380:45;:57;632:13273;;;;;;-1:-1:-1;632:13273:120;;;;;;-1:-1:-1;632:13273:120;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;;:::i;:::-;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;632:13273:120;;;;;;4301:16:25;632:13273:120;-1:-1:-1;;;;;632:13273:120;;4726:16:25;;:34;;;;632:13273:120;4805:1:25;4790:16;:50;;;;632:13273:120;4855:13:25;:30;;;;632:13273:120;4851:91:25;;;-1:-1:-1;;632:13273:120;;4805:1:25;632:13273:120;-1:-1:-1;;;;;;;;;;;632:13273:120;6961:1:25;;632:13273:120;4979:67:25;;632:13273:120;6893:76:25;;;:::i;:::-;;;:::i;:::-;6961:1;:::i;:::-;632:13273:120;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:24;;:::i;:::-;632:13273:120;13773:27;;-1:-1:-1;;632:13273:120;;;;;;;;;13754:52;632:13273;13754:52;;632:13273;;;;13754:52;;;;;;:::i;:::-;632:13273;;;;13744:63;;:89;632:13273;;-1:-1:-1;;;;;;;;;;;632:13273:120;1394:17;;:::i;:::-;632:13273;;;;4805:1:25;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;1444:53;;632:13273;;;1444:53;632:13273;;1421:20;;632:13273;;-1:-1:-1;;;;;;632:13273:120;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1507:25;;;632:13273;;-1:-1:-1;;632:13273:120;;;;;577:4:122;;;:::i;:::-;632:13273:120;;;;;;;:::i;:::-;577:4:122;;;632:13273:120;577:4:122;;;632:13273:120;577:4:122;;;632:13273:120;;577:4:122;;;;;;;;;;;1605:35:120;;;;;1650:22;1605:35;;;:::i;:::-;632:13273;;:::i;:::-;;674:18:122;632:13273:120;;;;;;:::i;:::-;447:13:122;632:13273:120;;3889:60:122;632:13273:120;1650:22;632:13273;;-1:-1:-1;;;;;;632:13273:120;;;;;5066:101:25;;577:4:122;632:13273:120;;;;5066:101:25;632:13273:120;5142:14:25;632:13273:120;-1:-1:-1;;;632:13273:120;-1:-1:-1;;;;;;;;;;;632:13273:120;;-1:-1:-1;;;;;;;;;;;632:13273:120;;4805:1:25;632:13273:120;;5142:14:25;5066:101;;;577:4:122;632:13273:120;;;;;;:::i;:::-;577:4:122;;;;;;;;632:13273:120;;;;;;;;;;;;;;4979:67:25;-1:-1:-1;;632:13273:120;;;-1:-1:-1;;;;;;;;;;;632:13273:120;4979:67:25;;;4851:91;6498:23;;;632:13273:120;;4908:23:25;632:13273:120;;;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:13273:120;;;;;;-1:-1:-1;;632:13273:120;;;;2357:1:24;632:13273:120;;:::i;:::-;2303:62:24;;:::i;632:13273:120:-;;;;;;;-1:-1:-1;;632:13273:120;;;;;;3534:28;-1:-1:-1;;;;;;;;;;;632:13273:120;3534:28;632:13273;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;3943:56;3970:28;-1:-1:-1;;;;;;;;;;;632:13273:120;3970:28;3943:56;:::i;:::-;632:13273;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;3806:39;-1:-1:-1;;;;;;;;;;;632:13273:120;3806:39;632:13273;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;632:13273:120;;7474:107;632:13273;;7482:38;;7474:107;:::i;:::-;632:13273;;7810:19;;;;632:13273;;;7686:3;7657:27;;;;;;-1:-1:-1;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7810:82;632:13273;;;7998:20;3445::122;7998::120;8388:76;7998:20;;;;;:::i;:::-;;;;632:13273;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;8085:24;632:13273;;;8127:39;;;632:13273;;8127:41;;;:::i;:::-;632:13273;;7994:279;8328:20;;;:::i;:::-;632:13273;;8292:57;632:13273;;;;;;8292:57;3445:20:122;:::i;:::-;632:13273:120;;3409:57:122;632:13273:120;3409:57:122;;632:13273:120;;;;;;;;;;;;3409:57:122;;;;;;:::i;:::-;632:13273:120;3399:68:122;;8388:76:120;;:::i;:::-;7686:3;632:13273;7642:13;;;7994:279;632:13273;;;;;;;;;;;;;;;;;;7994:279;;632:13273;;;-1:-1:-1;;;632:13273:120;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:120;;;;;;;;;;;;;;;;;;;;;7657:27;;8506:78;7657:27;;8485:155;7657:27;632:13273;;;;;8538:32;8506:78;;:::i;:::-;8485:155;:::i;632:13273::-;;;;;;-1:-1:-1;;632:13273:120;;;;;;:::i;:::-;;;;2908:43:37;632:13273:120;;7058:30;;;;;:::i;:::-;632:13273;;;7155:32;632:13273;7155:32;;632:13273;;;;;;;;7155:32;;;632:13273;7155:32;;:::i;:::-;632:13273;;7145:43;;;-1:-1:-1;;;;;632:13273:120;2908:43:37;:::i;:::-;632:13273:120;10564:36;;;;;;632:13273;;-1:-1:-1;;;10564:36:120;;632:13273;;;;;;10564:36;;;;;;;;;632:13273;-1:-1:-1;;;;;;632:13273:120;;7200:47;;;;;632:13273;;-1:-1:-1;;;7200:47:120;;7227:10;632:13273;7200:47;;632:13273;;;;;;;;-1:-1:-1;632:13273:120;;;;;7200:47;;;;;;;;;632:13273;;;;;;;;;7200:47;632:13273;;7200:47;;;:::i;:::-;632:13273;;;;7200:47;;;;632:13273;;;;;;;;;;10564:36;632:13273;;10564:36;;;:::i;:::-;632:13273;;;;10564:36;;;632:13273;;;;;;;-1:-1:-1;;632:13273:120;;;;-1:-1:-1;;;;;;;;;;;632:13273:120;;2658:23;632:13273;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;3680:39;-1:-1:-1;;;;;;;;;;;632:13273:120;3680:39;632:13273;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;-1:-1:-1;632:13273:120;;;;;;;;;3680:39;632:13273;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;2541:30;-1:-1:-1;;;;;;;;;;;632:13273:120;2541:30;632:13273;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;:::i;:::-;637:66:54;3321:69:57;;;;1413:93:54;;3550:68:57;1624:4:54;637:66;3550:68:57;-1:-1:-1;;;;;;;;;;;632:13273:120;;;8852:107;8860:24;;632:13273;8860:38;;8852:107;:::i;:::-;632:13273;;9021:13;;632:13273;;9066:3;9040:24;;9036:28;;;;;;632:13273;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;;;;;;10809:27;;;;632:13273;;10845:39;;;632:13273;10809:75;632:13273;;10966:58;632:13273;10990:33;;;632:13273;10966:58;:::i;:::-;632:13273;;;;11284:26;;;;;;:::i;:::-;632:13273;;;;;;;:::i;:::-;;;;;;;11237:74;;;;632:13273;;;;10809:27;;;;632:13273;;;;10809:27;;632:13273;;;;;10809:27;;632:13273;;11381:28;;;;632:13273;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11938:13;;632:13273;11978:3;632:13273;;;;;;11953:23;;;;;;632:13273;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;;;;;;;;;;12124:18;632:13273;;;;;;;;;;;;;;;;;;;;;12124:18;:::i;:::-;-1:-1:-1;;;;;632:13273:120;-1:-1:-1;632:13273:120;;;12095:19;;:28;;632:13273;;;;;;12095:53;632:13273;;;;;;;12241:32;:20;;:32;632:13273;;12284:18;632:13273;;;;;;;;;;;;;;;;;;;;;12284:18;:::i;:::-;632:13273;;;;;;;;;;;;;;;;;;11381:28;12304:25;632:13273;-1:-1:-1;;;;;632:13273:120;;;;;;;;-1:-1:-1;;;12228:102:120;;-1:-1:-1;;;;;632:13273:120;;;;12228:102;;632:13273;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;12228:102;;632:13273;;12228:102;;;;;;;;11978:3;632:13273;;;;;;12378:18;632:13273;;;;;;;;;;;;;;;;;;;;;12378:18;:::i;:::-;632:13273;;;;;;;;12370:62;;632:13273;;12370:62;;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12228:102;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;632:13273:120;11381:28;632:13273;;;;;;;;;;;;;;;;;;;12304:25;632:13273;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12370:62;;;;;;;;632:13273;12370:62;;632:13273;;;12370:62;;;;;;;;632:13273;;12370:62;;;632:13273;12467:47;;;;:::i;:::-;11978:3;;;1624:4:54;632:13273:120;11978:3;;11938:13;;12370:62;;;632:13273;12370:62;;;;;;;;;632:13273;12370:62;;;:::i;:::-;;;632:13273;;;;12467:47;632:13273;;12370:62;;;;;;-1:-1:-1;12370:62:120;;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;632:13273:120;11381:28;632:13273;;;:::i;:::-;;;;;;;;;;11381:28;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1624:4:54;632:13273:120;;;;;;;;;;;;1624:4:54;632:13273:120;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;:::i;:::-;;;;;;;;;;;;;;12228:102;632:13273;12228:102;;;;;;;;;632:13273;12228:102;;;:::i;:::-;;;632:13273;;;;;;;;;;12228:102;632:13273;;;;;12228:102;;;-1:-1:-1;12228:102:120;;632:13273;;;-1:-1:-1;;;632:13273:120;;;;;;;;;;;;;12228:102;632:13273;;;-1:-1:-1;;;632:13273:120;;;;;;;11953:23;;9192:75;11953:23;;;;632:13273;;;;;12542:28;11426:37;632:13273;;;;;;;;11426:37;11554:26;632:13273;11284:26;;;11554;:::i;:::-;632:13273;;;2815:98:122;632:13273:120;2815:98:122;;632:13273:120;;;;;;;;;;;;;;;;;;10845:39;;;632:13273;;;;;;10990:33;;;632:13273;;;;;;;;;;2815:98:122;;;;;;:::i;9192:75:120:-;9066:3;1624:4:54;9066:3:120;;632:13273;9066:3;;9021:13;;;;632:13273;;;-1:-1:-1;;;632:13273:120;;;;;;;;;;;;;12228:102;632:13273;;;-1:-1:-1;;;632:13273:120;;;;;;;;;;-1:-1:-1;;;632:13273:120;;;;;;;;;;;;;12228:102;632:13273;;;-1:-1:-1;;;632:13273:120;;;;;;;9036:28;9288:156;9309:79;9036:28;;;632:13273;;;;;9341:33;9309:79;;;:::i;9288:156::-;632:13273;;637:66:54;3550:68:57;632:13273:120;;;;1413:93:54;1465:30;;;632:13273:120;;1465:30:54;632:13273:120;;;1465:30:54;632:13273:120;;;;;;-1:-1:-1;;632:13273:120;;;;4238:22;-1:-1:-1;;;;;;;;;;;632:13273:120;4238:22;632:13273;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;632:13273:120;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:13273:120;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;632:13273:120;;;;5111:28;632:13273;;5111:28;;5038:129;5058:23;;;;;;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:13273:120;;;;;;;;;5111:28;632:13273;;;5083:3;5140:15;;;5111:28;5140:15;;;;:::i;:::-;;:::i;:::-;632:13273;;;;;;-1:-1:-1;632:13273:120;;;;;-1:-1:-1;632:13273:120;;5102:54;;;;:::i;:::-;632:13273;;5043:13;;632:13273;;;;;;;-1:-1:-1;;632:13273:120;;;;;5272:36;-1:-1:-1;;;;;;;;;;;632:13273:120;5272:36;632:13273;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;;:::i;:::-;4762:31;-1:-1:-1;;;;;;;;;;;632:13273:120;4762:31;:43;632:13273;;;;;;-1:-1:-1;632:13273:120;;;;;-1:-1:-1;632:13273:120;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;-1:-1:-1;;;;;;;;;;;632:13273:120;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;-1:-1:-1;;;;;;;;;;;632:13273:120;;;;;;5823:26;;;632:13273;;5813:37;5869:25;;;632:13273;;;;;;;;;;-1:-1:-1;;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;-1:-1:-1;;;;;;;;;;;632:13273:120;2893:35;;632:13273;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;;:::i;:::-;;;4110:25;-1:-1:-1;;;;;;;;;;;632:13273:120;4110:25;-1:-1:-1;;;;;632:13273:120;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:13273:120;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;632:13273:120;;;;4589:19;632:13273;;4589:19;;4519:120;4539:20;;;;;;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;4561:3;4615:12;;;;;:::i;:::-;632:13273;;;;;;;;;;;;;;4580:48;;;;;:::i;:::-;632:13273;;;;;;;;;;;4524:13;;632:13273;;;;;;;-1:-1:-1;;632:13273:120;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:13273:120;;-1:-1:-1;;;;;;632:13273:120;;;;;;;;-1:-1:-1;;;;;632:13273:120;3975:40:24;632:13273:120;;3975:40:24;632:13273:120;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:13273:120;;;;;;6431:44:25;;;;632:13273:120;6427:105:25;;-1:-1:-1;;632:13273:120;;;-1:-1:-1;;;;;;;;;;;632:13273:120;-1:-1:-1;;;;;;;;;;;632:13273:120;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:24;;:::i;:::-;632:13273:120;13773:27;;-1:-1:-1;;632:13273:120;;;;;;;;6656:20:25;632:13273:120;2289:25;632:13273;;;;;13754:52;;;;632:13273;;;13754:52;;;;;;;:::i;:::-;632:13273;;;;13744:63;;:89;632:13273;;-1:-1:-1;;;;;;;;;;;632:13273:120;1962:17;;:::i;:::-;632:13273;;;;6593:4:25;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;2015:23;;632:13273;1989:23;;632:13273;;;;;;;2119:28;;632:13273;2119:28;;;632:13273;;2119:28;2049;;632:13273;;;;;;;;;2184:66;632:13273;2210:39;;;632:13273;:::i;:::-;2184:66;;:::i;:::-;2289:25;2261;;632:13273;;;;;;;;;-1:-1:-1;;;632:13273:120;-1:-1:-1;;;;;;;;;;;632:13273:120;;-1:-1:-1;;;;;;;;;;;632:13273:120;;1776:1;632:13273;;6656:20:25;632:13273:120;;;;;;-1:-1:-1;;;;;632:13273:120;-1:-1:-1;;;;;632:13273:120;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;-1:-1:-1;;;;;;;632:13273:120;;;;;;;-1:-1:-1;;;;;;;632:13273:120;;;;;;;;;;;;;-1:-1:-1;;;;;;632:13273:120;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6431:44:25;632:13273:120;1776:1;-1:-1:-1;;;;;632:13273:120;;6450:25:25;;6431:44;;632:13273:120;;;;;;;-1:-1:-1;;632:13273:120;;;;-1:-1:-1;;;;;;;;;;;632:13273:120;2775:35;;632:13273;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;6768:30;632:13273;;;:::i;:::-;-1:-1:-1;;;;;632:13273:120;;6768:30;:::i;:::-;632:13273;6809:50;;;;;632:13273;;;;;;6809:50;;6836:10;632:13273;6809:50;;632:13273;;;;;;;6809:50;;;;;;;;;;;;632:13273;6809:50;;;632:13273;;;;;;;;6809:50;632:13273;6809:50;;;:::i;:::-;632:13273;;;6809:50;;;;632:13273;;;;;;;;;6809:50;632:13273;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:13273:120;;5541:23;632:13273;;-1:-1:-1;;;;;;632:13273:120;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;;;;;-1:-1:-1;;;;;;;;;;;632:13273:120;;;;;;;;;;;;;;;:::i;:::-;6112:16;;;;;:36;;;632:13273;;;;6366:19;-1:-1:-1;;;;;;;;;;;632:13273:120;6227:107;632:13273;;6235:38;;6227:107;:::i;:::-;6366:19;632:13273;;;;;;;;;;;;;;;;;;;;;6601:45;632:13273;;;;;;;;;;;6551:34;632:13273;;;;;;;;;;;;;;;;;6601:45;632:13273;;;;-1:-1:-1;;;632:13273:120;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:120;;;;;;;;;;;;-1:-1:-1;;;632:13273:120;;;;;;;6112:36;6132:11;632:13273;6132:11;:16;;6112:36;;632:13273;;;;;;-1:-1:-1;;632:13273:120;;;;;;5399:42;-1:-1:-1;;;;;;;;;;;632:13273:120;5399:42;632:13273;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:13273:120;;;;;;:::o;:::-;;;-1:-1:-1;;;;;632:13273:120;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;:::o;:::-;;;;-1:-1:-1;632:13273:120;;;;;-1:-1:-1;632:13273:120;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;632:13273:120;;-1:-1:-1;632:13273:120;;-1:-1:-1;632:13273:120;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;-1:-1:-1;632:13273:120;;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;632:13273:120;;;;;;;:::o;:::-;;-1:-1:-1;;;;;632:13273:120;;;;;;;:::o;2941:348::-;-1:-1:-1;;;;;;;;;;;632:13273:120;3146:42;;;632:13273;3098:22;;;;;;3271:11;;;;632:13273;2941:348;:::o;3122:3::-;3189:14;;;;;;:::i;:::-;-1:-1:-1;;;;;632:13273:120;-1:-1:-1;632:13273:120;;;;;;;;;;;;;3145:59;3141:110;;632:13273;;3083:13;;3141:110;3224:12;;;;632:13273;3224:12;:::o;632:13273::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;-1:-1:-1;;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;632:13273:120;;;;;;;:::o;:::-;;;;;;;;;;;;3405:215:24;-1:-1:-1;;;;;632:13273:120;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;632:13273:120;;-1:-1:-1;;;;;;632:13273:120;;;;;;;-1:-1:-1;;;;;632:13273:120;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:13273:120;;3509:1:24;3534:31;2658:162;-1:-1:-1;;;;;;;;;;;632:13273:120;-1:-1:-1;;;;;632:13273:120;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:13273:120;;-1:-1:-1;2763:40:24;9493:887:120;-1:-1:-1;;;;;;;;;;;632:13273:120;;9629:107;632:13273;;9637:38;;9629:107;:::i;:::-;632:13273;-1:-1:-1;632:13273:120;9768:19;;;632:13273;;;;-1:-1:-1;632:13273:120;;;;;;;;;9806:24;9768:62;632:13273;;2908:43:37;10265:33:120;632:13273;;;;;;10119:32;;;632:13273;;;;;;10163:32;;632:13273;;;;;;;;;10163:32;;;;;;:::i;:::-;632:13273;10153:43;;2908::37;;:::i;:::-;10208:37:120;632:13273;;;;;;;-1:-1:-1;632:13273:120;10208:28;;;632:13273;;;;-1:-1:-1;632:13273:120;;10265:33;:35;632:13273;;10265:35;:::i;:::-;632:13273;;;;-1:-1:-1;;;;;632:13273:120;;;;10316:32;;632:13273;;10316:32;9493:887;:::o;632:13273::-;;;-1:-1:-1;;;632:13273:120;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:120;;;;;;;4345:169:122;-1:-1:-1;632:13273:120;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;632:13273:120;;;4468:12:122;632:13273:120;;4432:75:122;;632:13273:120;;4490:15:122;632:13273:120;;4432:75:122;;632:13273:120;4345:169:122;:::o;12583:406:120:-;;12687:36;;;632:13273;;;;;12788:13;;12846:42;;;12734:1;12827:3;632:13273;;12803:22;;;;;12687:36;;-1:-1:-1;;;;;12889:14:120;632:13273;12889:14;;:::i;:::-;632:13273;;;;;;;;-1:-1:-1;632:13273:120;;;;;-1:-1:-1;632:13273:120;;;;;;;;;;;12788:13;;12803:22;-1:-1:-1;632:13273:120;;;12803:22;-1:-1:-1;;;;;;632:13273:120;;;;;;;;;;;;;;;;;;;12783:139;632:13273;;;;12734:1;632:13273;;12734:1;632:13273;12734:1;632:13273;;;;;;12583:406;;;;:::o;632:13273::-;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;12687:36;632:13273;;;;;12734:1;632:13273;;;12734:1;632:13273;;;;;;;;;;;;;;;;12734:1;632:13273;;12687:36;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4937:793:122:-;;;;5133:48;5155:25;;;5133:48;:::i;:::-;632:13273:120;;;5256:27:122;;;;632:13273:120;;;5256:27:122;;;;632:13273:120;5256:27:122;;:::i;:::-;2831:45:59;632:13273:120;;;2831:45:59;;5256:27:122;2831:45:59;;632:13273:120;;;;;;5218:4:122;632:13273:120;;;;;;;;;;;;;;;;;;;;2831:45:59;;632:13273:120;;2831:45:59;;;;;;:::i;:::-;632:13273:120;2821:56:59;;632:13273:120;5337:13:122;5516:42;632:13273:120;5516:42:122;;5332:369;5376:3;5352:22;;;;;;632:13273:120;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;5256:27:122;632:13273:120;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:120;5256:27:122;632:13273:120;;;:::i;:::-;;;;5256:27:122;632:13273:120;;;;;;;;;5256:27:122;632:13273:120;3927:8:58;632:13273:120;3871:27:58;632:13273:120;;;;;;;;;3871:27:58;;:::i;:::-;3927:8;;;;;:::i;:::-;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;;;;;5512:179:122;;5376:3;632:13273:120;;5337:13:122;;5512:179;5593:17;;;;:::i;:::-;:30;;;;5512:179;5589:88;5647:11;;;;;;;632:13273:120;5647:11:122;:::o;5352:22::-;;;;;;;;632:13273:120;4937:793:122;:::o;5736:268::-;632:13273:120;5908:19:122;;;632:13273:120;;;;;;;;;;;;;;;;;;;5984:4:122;632:13273:120;;;;;;;5992:5:122;632:13273:120;;5736:268:122;:::o;2936:340::-;;632:13273:120;;3034:12:122;632:13273:120;3034:12:122;632:13273:120;;;;3017:230:122;3052:5;;;3017:230;-1:-1:-1;632:13273:120;;-1:-1:-1;2936:340:122:o;3059:3::-;3092:12;;3122:11;;;;;-1:-1:-1;3049:1:122;;-1:-1:-1;;3153:11:122:o;3118:119::-;3189:8;3185:52;;632:13273:120;;;;-1:-1:-1;;632:13273:120;;3022:28:122;;3185:52;3217:5;;632:13273:120;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:120;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;632:13273:120;;;;;;;;-1:-1:-1;;632:13273:120;;;;:::o;:::-;;;-1:-1:-1;;;;;632:13273:120;;;;;;:::o;7084:141:25:-;632:13273:120;-1:-1:-1;;;;;;;;;;;632:13273:120;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:25;;-1:-1:-1;7191:17:25;3384:974:37;3673:585;3384:974;3673:585;;;;;;;-1:-1:-1;3673:585:37;;;;;;;;-1:-1:-1;3673:585:37;632:13273:120;-1:-1:-1;;;;;632:13273:120;;4271:22:37;4267:85;;3384:974::o;4267:85::-;4316:25;;;-1:-1:-1;4316:25:37;;-1:-1:-1;4316:25:37;2129:778:58;632:13273:120;;;2129:778:58;2319:2;2299:22;;2319:2;;2751:25;2535:196;;;;;;;;;;;;;;;-1:-1:-1;2535:196:58;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2807:83;;2823:1;2807:83;2827:35;2807:83;;:::o;7280:532::-;632:13273:120;;;;;;7366:29:58;;;7411:7;;:::o;7362:444::-;632:13273:120;7462:38:58;;632:13273:120;;7523:23:58;;;7375:20;7523:23;632:13273:120;7375:20:58;7523:23;7458:348;7576:35;7567:44;;7576:35;;7634:46;;;;7375:20;7634:46;632:13273:120;;;7375:20:58;7634:46;7563:243;7710:30;7701:39;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;;;7375:20;7763:32;632:13273:120;;;7375:20:58;7763:32;5203:1551;;;6283:66;6270:79;;6266:164;;632:13273:120;;;;;;-1:-1:-1;632:13273:120;;;;;;;;;;;;;;;;;;;6541:24:58;;;;;;;;;-1:-1:-1;6541:24:58;-1:-1:-1;;;;;632:13273:120;;6579:20:58;6575:113;;6698:49;-1:-1:-1;6698:49:58;-1:-1:-1;5203:1551:58;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:58;6541:24;6615:62;-1:-1:-1;6615:62:58;:::o;6266:164::-;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o","linkReferences":{}},"methodIdentifiers":{"areValidators(address[])":"8f381dbe","codeState(bytes32)":"c13911e8","codesStates(bytes32[])":"82bdeaad","commitBlocks((bytes32,uint48,bytes32,bytes32,(address,bytes32,bytes,uint128,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4))[])[])[],bytes[])":"c5a77c13","commitCodes((bytes32,bool)[],bytes[])":"e97d3eb3","computeSettings()":"84d22a4f","createProgram(bytes32,bytes32)":"527de0f9","createProgramWithDecoder(address,bytes32,bytes32)":"e7006a74","genesisBlockHash()":"28e24b3d","initialize(address,address,address,address,address[])":"f8453e7c","isValidator(address)":"facd743b","latestCommittedBlockHash()":"c9f16a11","lookupGenesisHash()":"8b1edf1e","mirrorImpl()":"e6fabc09","mirrorProxyImpl()":"65ecfea2","owner()":"8da5cb5b","programCodeId(address)":"9067088e","programsCodeIds(address[])":"baaf0201","programsCount()":"96a2ddfa","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestCodeValidation(bytes32,bytes32)":"1c149d8a","setMirror(address)":"3d43b418","signingThresholdPercentage()":"efd81abc","transferOwnership(address)":"f2fde38b","validatedCodesCount()":"007a32e7","validators()":"ca1e7819","validatorsCount()":"ed612f8c","validatorsThreshold()":"edc87225","wrappedVara()":"88f50cf0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"BlockCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"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\":\"threshold\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"name\":\"ComputationSettingsChanged\",\"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\":\"ValidatorsChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"areValidators\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"}],\"name\":\"codeState\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_codesIds\",\"type\":\"bytes32[]\"}],\"name\":\"codesStates\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState[]\",\"name\":\"\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes32\",\"name\":\"previousCommittedBlock\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"predecessorBlock\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"inheritor\",\"type\":\"bytes\"},{\"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 Gear.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 Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition[]\",\"name\":\"transitions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.BlockCommitment[]\",\"name\":\"_blockCommitments\",\"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 Gear.CodeCommitment[]\",\"name\":\"_codeCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitCodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"computeSettings\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ComputationSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"createProgram\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_decoderImpl\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"createProgramWithDecoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirrorProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wrappedVara\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_validator\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestCommittedBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lookupGenesisHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorImpl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorProxyImpl\",\"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\":\"_programId\",\"type\":\"address\"}],\"name\":\"programCodeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_programsIds\",\"type\":\"address[]\"}],\"name\":\"programsCodeIds\",\"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\":\"address\",\"name\":\"newMirror\",\"type\":\"address\"}],\"name\":\"setMirror\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signingThresholdPercentage\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatedCodesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"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\":{\"BlockCommitted(bytes32)\":{\"details\":\"This is an *informational* event, signaling that the block outcome has been committed.\",\"params\":{\"hash\":\"The block hash that was \\\"finalized\\\" in relation to the necessary transitions.\"}},\"CodeGotValidated(bytes32,bool)\":{\"details\":\"This is an *informational* event, signaling the results of code validation.\",\"params\":{\"codeId\":\"The ID of the code that was validated.\",\"valid\":\"The result of the validation: indicates whether the code ID can be used for program creation.\"}},\"CodeValidationRequested(bytes32,bytes32)\":{\"details\":\"This is a *requesting* event, signaling that validators need to download and validate the code from the transaction blob.\",\"params\":{\"blobTxHash\":\"The transaction hash that contains the WASM blob. Set to zero if applied to the current transaction.\",\"codeId\":\"The expected code ID of the applied WASM blob, represented as a Blake2 hash.\"}},\"ComputationSettingsChanged(uint64,uint128)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to change the computation settings. Users and program authors may want to adjust their practices, while validators need to apply the changes internally starting from the next block.\",\"params\":{\"threshold\":\"The amount of Gear gas initially allocated for free to allow the program to decide if it wants to process the incoming message.\",\"wvaraPerSecond\":\"The amount of WVara to be charged from the program's execution balance per second of computation.\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"ProgramCreated(address,bytes32)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling the creation of a new program and its Ethereum mirror. Validators need to initialize it with a zeroed hash state internally.\",\"params\":{\"actorId\":\"ID of the actor that was created. It is accessible inside the co-processor and on Ethereum by this identifier.\",\"codeId\":\"The code ID of the WASM implementation of the created program.\"}},\"StorageSlotChanged()\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to wipe the router state, rendering all previously existing codes and programs ineligible. Validators need to wipe their databases immediately.\"},\"ValidatorsChanged()\":{\"details\":\"This is an *informational* event, signaling that only new validators are now able to pass commitment signing verification.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"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\":{\"events\":{\"BlockCommitted(bytes32)\":{\"notice\":\"Emitted when all necessary state transitions have been applied and states have changed.\"},\"CodeGotValidated(bytes32,bool)\":{\"notice\":\"Emitted when a code, previously requested for validation, receives validation results, so its CodeStatus changed.\"},\"CodeValidationRequested(bytes32,bytes32)\":{\"notice\":\"Emitted when a new code validation request is submitted.\"},\"ComputationSettingsChanged(uint64,uint128)\":{\"notice\":\"Emitted when the computation settings have been changed.\"},\"ProgramCreated(address,bytes32)\":{\"notice\":\"Emitted when a new program within the co-processor is created and is now available on-chain.\"},\"StorageSlotChanged()\":{\"notice\":\"Emitted when the router's storage slot has been changed.\"},\"ValidatorsChanged()\":{\"notice\":\"Emitted when the election mechanism forces the validator set to be changed.\"}},\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"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\":\"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0\",\"dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x534bf5c25d6003a8ce50b400d20fa460c03169ad7baa90d47a912917c36dfe2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc0cc39c40ea23d3c46e8517e19ebdd877719d3159fa032f2a91802cdd205c79\",\"dweb:/ipfs/QmSoNh7HTkD4TJcBkBKSGSPMMpLUZKE7s9f2G6mjdaJywg\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0x9303ef5a2beb555e52ce56598de205ce07ca8988fc67d073687c06cb8fc973d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b2e48fb42844c25e6cb38e7cfa1d91dcdc054613fd10f608833dbc677acf889\",\"dweb:/ipfs/QmT4HQxbgpWA3fZnK4dY3eXHNCoyBvpvzNq5k7eSt5mR5t\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/IMirror.sol\":{\"keccak256\":\"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6\",\"dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm\"]},\"src/IMirrorDecoder.sol\":{\"keccak256\":\"0x95bfe42461bd03e726f894679f4b4133034a405672fe8343c3343d0964cf9072\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a0907d84596ed62b9ea222fd841fc0259e87b17dd0b5af3f6d0d8a8f4726994d\",\"dweb:/ipfs/QmTkumKh7DBJNXrark6NBqBxCtnYmbRMGYkRyxxzpW9wKr\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17\",\"dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Router.sol\":{\"keccak256\":\"0x098f1f85d1d0e06e941a21185d66c71f3b3ed9b32e3eb397f1f2675690d36a85\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://adb2450142d1c647273e63863755943f46e42ad13817ababcd29526dc218cc72\",\"dweb:/ipfs/QmdUvHEPWzcWLY99cK9X14uuthML4ESjJ4WKqMYXuXF7De\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0xad62fddfe4d63c9095ec7b382357012259e108fd565fb0dd28071d9905ce5367\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://51f471d58a8ec6631cefb597a7695ab91cca562e2a37c4e9fe09a291cf02c5be\",\"dweb:/ipfs/QmWrq9Gn1qgNG3kvFQoe5ZeyMWGgybaBCFGCcSZeRGwALH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"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":"bytes32","name":"hash","type":"bytes32","indexed":false}],"type":"event","name":"BlockCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","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":"threshold","type":"uint64","indexed":false},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128","indexed":false}],"type":"event","name":"ComputationSettingsChanged","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":"ValidatorsChanged","anonymous":false},{"inputs":[{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"view","type":"function","name":"areValidators","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"codeState","outputs":[{"internalType":"enum Gear.CodeState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32[]","name":"_codesIds","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"codesStates","outputs":[{"internalType":"enum Gear.CodeState[]","name":"","type":"uint8[]"}]},{"inputs":[{"internalType":"struct Gear.BlockCommitment[]","name":"_blockCommitments","type":"tuple[]","components":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes32","name":"previousCommittedBlock","type":"bytes32"},{"internalType":"bytes32","name":"predecessorBlock","type":"bytes32"},{"internalType":"struct Gear.StateTransition[]","name":"transitions","type":"tuple[]","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"bytes","name":"inheritor","type":"bytes"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"struct Gear.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 Gear.Message[]","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 Gear.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 Gear.CodeCommitment[]","name":"_codeCommitments","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":[],"stateMutability":"view","type":"function","name":"computeSettings","outputs":[{"internalType":"struct Gear.ComputationSettings","name":"","type":"tuple","components":[{"internalType":"uint64","name":"threshold","type":"uint64"},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128"}]}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgram","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_decoderImpl","type":"address"},{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgramWithDecoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_mirror","type":"address"},{"internalType":"address","name":"_mirrorProxy","type":"address"},{"internalType":"address","name":"_wrappedVara","type":"address"},{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"_validator","type":"address"}],"stateMutability":"view","type":"function","name":"isValidator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"latestCommittedBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"lookupGenesisHash"},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorImpl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorProxyImpl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_programId","type":"address"}],"stateMutability":"view","type":"function","name":"programCodeId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"_programsIds","type":"address[]"}],"stateMutability":"view","type":"function","name":"programsCodeIds","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":"address","name":"newMirror","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMirror"},{"inputs":[],"stateMutability":"view","type":"function","name":"signingThresholdPercentage","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"validatedCodesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"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":"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."},"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/","symbiotic-core/=lib/symbiotic-core/"],"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":"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae","urls":["bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0","dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol":{"keccak256":"0x534bf5c25d6003a8ce50b400d20fa460c03169ad7baa90d47a912917c36dfe2b","urls":["bzz-raw://cc0cc39c40ea23d3c46e8517e19ebdd877719d3159fa032f2a91802cdd205c79","dweb:/ipfs/QmSoNh7HTkD4TJcBkBKSGSPMMpLUZKE7s9f2G6mjdaJywg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0x9303ef5a2beb555e52ce56598de205ce07ca8988fc67d073687c06cb8fc973d1","urls":["bzz-raw://8b2e48fb42844c25e6cb38e7cfa1d91dcdc054613fd10f608833dbc677acf889","dweb:/ipfs/QmT4HQxbgpWA3fZnK4dY3eXHNCoyBvpvzNq5k7eSt5mR5t"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/IMirror.sol":{"keccak256":"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e","urls":["bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6","dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm"],"license":"UNLICENSED"},"src/IMirrorDecoder.sol":{"keccak256":"0x95bfe42461bd03e726f894679f4b4133034a405672fe8343c3343d0964cf9072","urls":["bzz-raw://a0907d84596ed62b9ea222fd841fc0259e87b17dd0b5af3f6d0d8a8f4726994d","dweb:/ipfs/QmTkumKh7DBJNXrark6NBqBxCtnYmbRMGYkRyxxzpW9wKr"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8","urls":["bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17","dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Router.sol":{"keccak256":"0x098f1f85d1d0e06e941a21185d66c71f3b3ed9b32e3eb397f1f2675690d36a85","urls":["bzz-raw://adb2450142d1c647273e63863755943f46e42ad13817ababcd29526dc218cc72","dweb:/ipfs/QmdUvHEPWzcWLY99cK9X14uuthML4ESjJ4WKqMYXuXF7De"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xad62fddfe4d63c9095ec7b382357012259e108fd565fb0dd28071d9905ce5367","urls":["bzz-raw://51f471d58a8ec6631cefb597a7695ab91cca562e2a37c4e9fe09a291cf02c5be","dweb:/ipfs/QmWrq9Gn1qgNG3kvFQoe5ZeyMWGgybaBCFGCcSZeRGwALH"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/Router.sol","id":69143,"exportedSymbols":{"Clones":[42512],"Gear":[69716],"IMirror":[65176],"IMirrorDecoder":[65211],"IRouter":[65461],"IWrappedVara":[65472],"OwnableUpgradeable":[40332],"ReentrancyGuardTransient":[44307],"Router":[69142],"StorageSlot":[44431]},"nodeType":"SourceUnit","src":"39:13867:120","nodes":[{"id":67789,"nodeType":"PragmaDirective","src":"39:24:120","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":67791,"nodeType":"ImportDirective","src":"65:64:120","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":69143,"sourceUnit":42513,"symbolAliases":[{"foreign":{"id":67790,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"73:6:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67793,"nodeType":"ImportDirective","src":"130:42:120","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"./libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":69143,"sourceUnit":69717,"symbolAliases":[{"foreign":{"id":67792,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"138:4:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67795,"nodeType":"ImportDirective","src":"173:38:120","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":69143,"sourceUnit":65177,"symbolAliases":[{"foreign":{"id":67794,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65176,"src":"181:7:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67797,"nodeType":"ImportDirective","src":"212:52:120","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":69143,"sourceUnit":65212,"symbolAliases":[{"foreign":{"id":67796,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65211,"src":"220:14:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67799,"nodeType":"ImportDirective","src":"265:38:120","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":69143,"sourceUnit":65462,"symbolAliases":[{"foreign":{"id":67798,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65461,"src":"273:7:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67801,"nodeType":"ImportDirective","src":"304:48:120","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":69143,"sourceUnit":65473,"symbolAliases":[{"foreign":{"id":67800,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65472,"src":"312:12:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67803,"nodeType":"ImportDirective","src":"353:101:120","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":69143,"sourceUnit":40333,"symbolAliases":[{"foreign":{"id":67802,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40332,"src":"361:18:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67805,"nodeType":"ImportDirective","src":"455:100:120","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol","nameLocation":"-1:-1:-1","scope":69143,"sourceUnit":44308,"symbolAliases":[{"foreign":{"id":67804,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44307,"src":"463:24:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67807,"nodeType":"ImportDirective","src":"556:74:120","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":69143,"sourceUnit":44432,"symbolAliases":[{"foreign":{"id":67806,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44431,"src":"564:11:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69142,"nodeType":"ContractDefinition","src":"632:13273:120","nodes":[{"id":67816,"nodeType":"VariableDeclaration","src":"813:106:120","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"838:12:120","scope":69142,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67814,"name":"bytes32","nodeType":"ElementaryTypeName","src":"813:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835633039636131623962383132376134666439663363333834616163353962363631343431653832306531373733333735336666356632653836653165303030","id":67815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"853:66:120","typeDescriptions":{"typeIdentifier":"t_rational_41630078590300661333111585883568696735413380457407274925697692750148467286016_by_1","typeString":"int_const 4163...(69 digits omitted)...6016"},"value":"0x5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000"},"visibility":"private"},{"id":67824,"nodeType":"FunctionDefinition","src":"979:53:120","nodes":[],"body":{"id":67823,"nodeType":"Block","src":"993:39:120","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67820,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40554,"src":"1003:20:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1003:22:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67822,"nodeType":"ExpressionStatement","src":"1003:22:120"}]},"documentation":{"id":67817,"nodeType":"StructuredDocumentation","src":"926:48:120","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":67818,"nodeType":"ParameterList","parameters":[],"src":"990:2:120"},"returnParameters":{"id":67819,"nodeType":"ParameterList","parameters":[],"src":"993:0:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67896,"nodeType":"FunctionDefinition","src":"1038:677:120","nodes":[],"body":{"id":67895,"nodeType":"Block","src":"1232:483:120","nodes":[],"statements":[{"expression":{"arguments":[{"id":67841,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67826,"src":"1257:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67840,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40192,"src":"1242:14:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":67842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1242:22:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67843,"nodeType":"ExpressionStatement","src":"1242:22:120"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725631","id":67845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1291:25:120","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":67844,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69141,"src":"1275:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":67846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1275:42:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67847,"nodeType":"ExpressionStatement","src":"1275:42:120"},{"assignments":[67850],"declarations":[{"constant":false,"id":67850,"mutability":"mutable","name":"router","nameLocation":"1343:6:120","nodeType":"VariableDeclaration","scope":67895,"src":"1327:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":67849,"nodeType":"UserDefinedTypeName","pathNode":{"id":67848,"name":"Storage","nameLocations":["1327:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"1327:7:120"},"referencedDeclaration":65250,"src":"1327:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":67853,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":67851,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"1352:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":67852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1352:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1327:34:120"},{"expression":{"id":67860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67854,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67850,"src":"1372:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67856,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1379:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65229,"src":"1372:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69318_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":67857,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"1394:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":67858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1399:10:120","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":69561,"src":"1394:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$69318_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":67859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1394:17:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69318_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"1372:39:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69318_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":67861,"nodeType":"ExpressionStatement","src":"1372:39:120"},{"expression":{"id":67871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67862,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67850,"src":"1421:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67864,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1428:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65237,"src":"1421:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69279_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":67867,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67828,"src":"1461:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67868,"name":"_mirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67830,"src":"1470:12:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67869,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67832,"src":"1484:12:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":67865,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"1444:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":67866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1449:11:120","memberName":"AddressBook","nodeType":"MemberAccess","referencedDeclaration":69279,"src":"1444:16:120","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddressBook_$69279_storage_ptr_$","typeString":"type(struct Gear.AddressBook storage pointer)"}},"id":67870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1444:53:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69279_memory_ptr","typeString":"struct Gear.AddressBook memory"}},"src":"1421:76:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69279_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":67872,"nodeType":"ExpressionStatement","src":"1421:76:120"},{"expression":{"id":67880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":67873,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67850,"src":"1507:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67876,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1514:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"1507:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":67877,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1533:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69369,"src":"1507:52:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":67878,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"1562:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":67879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1567:28:120","memberName":"SIGNING_THRESHOLD_PERCENTAGE","nodeType":"MemberAccess","referencedDeclaration":69269,"src":"1562:33:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"1507:88:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":67881,"nodeType":"ExpressionStatement","src":"1507:88:120"},{"expression":{"arguments":[{"id":67883,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67850,"src":"1620:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":67884,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67835,"src":"1628:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"id":67882,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69033,"src":"1605:14:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$65250_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IRouter.Storage storage pointer,address[] memory)"}},"id":67885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1605:35:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67886,"nodeType":"ExpressionStatement","src":"1605:35:120"},{"expression":{"id":67893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67887,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67850,"src":"1650:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67889,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1657:15:120","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65245,"src":"1650:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69311_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":67890,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"1675:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":67891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1680:26:120","memberName":"defaultComputationSettings","nodeType":"MemberAccess","referencedDeclaration":69508,"src":"1675:31:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ComputationSettings_$69311_memory_ptr_$","typeString":"function () pure returns (struct Gear.ComputationSettings memory)"}},"id":67892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1675:33:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69311_memory_ptr","typeString":"struct Gear.ComputationSettings memory"}},"src":"1650:58:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69311_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":67894,"nodeType":"ExpressionStatement","src":"1650:58:120"}]},"functionSelector":"f8453e7c","implemented":true,"kind":"function","modifiers":[{"id":67838,"kind":"modifierInvocation","modifierName":{"id":67837,"name":"initializer","nameLocations":["1220:11:120"],"nodeType":"IdentifierPath","referencedDeclaration":40440,"src":"1220:11:120"},"nodeType":"ModifierInvocation","src":"1220:11:120"}],"name":"initialize","nameLocation":"1047:10:120","parameters":{"id":67836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67826,"mutability":"mutable","name":"_owner","nameLocation":"1075:6:120","nodeType":"VariableDeclaration","scope":67896,"src":"1067:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67825,"name":"address","nodeType":"ElementaryTypeName","src":"1067:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67828,"mutability":"mutable","name":"_mirror","nameLocation":"1099:7:120","nodeType":"VariableDeclaration","scope":67896,"src":"1091:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67827,"name":"address","nodeType":"ElementaryTypeName","src":"1091:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67830,"mutability":"mutable","name":"_mirrorProxy","nameLocation":"1124:12:120","nodeType":"VariableDeclaration","scope":67896,"src":"1116:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67829,"name":"address","nodeType":"ElementaryTypeName","src":"1116:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67832,"mutability":"mutable","name":"_wrappedVara","nameLocation":"1154:12:120","nodeType":"VariableDeclaration","scope":67896,"src":"1146:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67831,"name":"address","nodeType":"ElementaryTypeName","src":"1146:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67835,"mutability":"mutable","name":"_validators","nameLocation":"1195:11:120","nodeType":"VariableDeclaration","scope":67896,"src":"1176:30:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":67833,"name":"address","nodeType":"ElementaryTypeName","src":"1176:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67834,"nodeType":"ArrayTypeName","src":"1176:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1057:155:120"},"returnParameters":{"id":67839,"nodeType":"ParameterList","parameters":[],"src":"1232:0:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67960,"nodeType":"FunctionDefinition","src":"1721:600:120","nodes":[],"body":{"id":67959,"nodeType":"Block","src":"1779:542:120","nodes":[],"statements":[{"assignments":[67906],"declarations":[{"constant":false,"id":67906,"mutability":"mutable","name":"oldRouter","nameLocation":"1805:9:120","nodeType":"VariableDeclaration","scope":67959,"src":"1789:25:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":67905,"nodeType":"UserDefinedTypeName","pathNode":{"id":67904,"name":"Storage","nameLocations":["1789:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"1789:7:120"},"referencedDeclaration":65250,"src":"1789:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":67909,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":67907,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"1817:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":67908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1817:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1789:37:120"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725632","id":67911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1853:25:120","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":67910,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69141,"src":"1837:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":67912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:42:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67913,"nodeType":"ExpressionStatement","src":"1837:42:120"},{"assignments":[67916],"declarations":[{"constant":false,"id":67916,"mutability":"mutable","name":"newRouter","nameLocation":"1905:9:120","nodeType":"VariableDeclaration","scope":67959,"src":"1889:25:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":67915,"nodeType":"UserDefinedTypeName","pathNode":{"id":67914,"name":"Storage","nameLocations":["1889:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"1889:7:120"},"referencedDeclaration":65250,"src":"1889:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":67919,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":67917,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"1917:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":67918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1917:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1889:37:120"},{"expression":{"id":67926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67920,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67916,"src":"1937:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67922,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1947:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65229,"src":"1937:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69318_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":67923,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"1962:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":67924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1967:10:120","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":69561,"src":"1962:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$69318_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":67925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1962:17:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69318_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"1937:42:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69318_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":67927,"nodeType":"ExpressionStatement","src":"1937:42:120"},{"expression":{"id":67933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67928,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67916,"src":"1989:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1999:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65237,"src":"1989:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69279_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":67931,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67906,"src":"2015:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67932,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2025:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65237,"src":"2015:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69279_storage","typeString":"struct Gear.AddressBook storage ref"}},"src":"1989:49:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69279_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":67934,"nodeType":"ExpressionStatement","src":"1989:49:120"},{"expression":{"id":67943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":67935,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67916,"src":"2049:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67938,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2059:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"2049:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":67939,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2078:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69369,"src":"2049:55:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":67940,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67906,"src":"2119:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67941,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2129:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"2119:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":67942,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2148:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69369,"src":"2119:55:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2049:125:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":67944,"nodeType":"ExpressionStatement","src":"2049:125:120"},{"expression":{"arguments":[{"id":67946,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67916,"src":"2199:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"expression":{"id":67947,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67906,"src":"2210:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67948,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2220:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"2210:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":67949,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2239:10:120","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":69372,"src":"2210:39:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"id":67945,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69033,"src":"2184:14:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$65250_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IRouter.Storage storage pointer,address[] memory)"}},"id":67950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2184:66:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67951,"nodeType":"ExpressionStatement","src":"2184:66:120"},{"expression":{"id":67957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67952,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67916,"src":"2261:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67954,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2271:15:120","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65245,"src":"2261:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69311_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":67955,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67906,"src":"2289:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67956,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2299:15:120","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65245,"src":"2289:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69311_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"src":"2261:53:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69311_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":67958,"nodeType":"ExpressionStatement","src":"2261:53:120"}]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":67899,"kind":"modifierInvocation","modifierName":{"id":67898,"name":"onlyOwner","nameLocations":["1752:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"1752:9:120"},"nodeType":"ModifierInvocation","src":"1752:9:120"},{"arguments":[{"hexValue":"32","id":67901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1776:1:120","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":67902,"kind":"modifierInvocation","modifierName":{"id":67900,"name":"reinitializer","nameLocations":["1762:13:120"],"nodeType":"IdentifierPath","referencedDeclaration":40487,"src":"1762:13:120"},"nodeType":"ModifierInvocation","src":"1762:16:120"}],"name":"reinitialize","nameLocation":"1730:12:120","parameters":{"id":67897,"nodeType":"ParameterList","parameters":[],"src":"1742:2:120"},"returnParameters":{"id":67903,"nodeType":"ParameterList","parameters":[],"src":"1779:0:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67971,"nodeType":"FunctionDefinition","src":"2343:109:120","nodes":[],"body":{"id":67970,"nodeType":"Block","src":"2401:51:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67965,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"2418:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":67966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2418:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67967,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2428:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65229,"src":"2418:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69318_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":67968,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2441:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69313,"src":"2418:27:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":67964,"id":67969,"nodeType":"Return","src":"2411:34:120"}]},"baseFunctions":[65294],"functionSelector":"28e24b3d","implemented":true,"kind":"function","modifiers":[],"name":"genesisBlockHash","nameLocation":"2352:16:120","parameters":{"id":67961,"nodeType":"ParameterList","parameters":[],"src":"2368:2:120"},"returnParameters":{"id":67964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67963,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67971,"src":"2392:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67962,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2392:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2391:9:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":67982,"nodeType":"FunctionDefinition","src":"2458:125:120","nodes":[],"body":{"id":67981,"nodeType":"Block","src":"2524:59:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67976,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"2541:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":67977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2541:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2551:20:120","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"2541:30:120","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69306_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":67979,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2572:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69303,"src":"2541:35:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":67975,"id":67980,"nodeType":"Return","src":"2534:42:120"}]},"baseFunctions":[65299],"functionSelector":"c9f16a11","implemented":true,"kind":"function","modifiers":[],"name":"latestCommittedBlockHash","nameLocation":"2467:24:120","parameters":{"id":67972,"nodeType":"ParameterList","parameters":[],"src":"2491:2:120"},"returnParameters":{"id":67975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67974,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67982,"src":"2515:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67973,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2515:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2514:9:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":67993,"nodeType":"FunctionDefinition","src":"2589:106:120","nodes":[],"body":{"id":67992,"nodeType":"Block","src":"2641:54:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67987,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"2658:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":67988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2658:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67989,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2668:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65237,"src":"2658:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69279_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":67990,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2682:6:120","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":69274,"src":"2658:30:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67986,"id":67991,"nodeType":"Return","src":"2651:37:120"}]},"baseFunctions":[65304],"functionSelector":"e6fabc09","implemented":true,"kind":"function","modifiers":[],"name":"mirrorImpl","nameLocation":"2598:10:120","parameters":{"id":67983,"nodeType":"ParameterList","parameters":[],"src":"2608:2:120"},"returnParameters":{"id":67986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67985,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67993,"src":"2632:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67984,"name":"address","nodeType":"ElementaryTypeName","src":"2632:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2631:9:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68004,"nodeType":"FunctionDefinition","src":"2701:116:120","nodes":[],"body":{"id":68003,"nodeType":"Block","src":"2758:59:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67998,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"2775:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":67999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2775:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68000,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2785:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65237,"src":"2775:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69279_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68001,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2799:11:120","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":69276,"src":"2775:35:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67997,"id":68002,"nodeType":"Return","src":"2768:42:120"}]},"baseFunctions":[65309],"functionSelector":"65ecfea2","implemented":true,"kind":"function","modifiers":[],"name":"mirrorProxyImpl","nameLocation":"2710:15:120","parameters":{"id":67994,"nodeType":"ParameterList","parameters":[],"src":"2725:2:120"},"returnParameters":{"id":67997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67996,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68004,"src":"2749:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67995,"name":"address","nodeType":"ElementaryTypeName","src":"2749:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2748:9:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68015,"nodeType":"FunctionDefinition","src":"2823:112:120","nodes":[],"body":{"id":68014,"nodeType":"Block","src":"2876:59:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68009,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"2893:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2893:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68011,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2903:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65237,"src":"2893:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69279_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68012,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2917:11:120","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":69278,"src":"2893:35:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68008,"id":68013,"nodeType":"Return","src":"2886:42:120"}]},"baseFunctions":[65314],"functionSelector":"88f50cf0","implemented":true,"kind":"function","modifiers":[],"name":"wrappedVara","nameLocation":"2832:11:120","parameters":{"id":68005,"nodeType":"ParameterList","parameters":[],"src":"2843:2:120"},"returnParameters":{"id":68008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68007,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68015,"src":"2867:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68006,"name":"address","nodeType":"ElementaryTypeName","src":"2867:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2866:9:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68057,"nodeType":"FunctionDefinition","src":"2941:348:120","nodes":[],"body":{"id":68056,"nodeType":"Block","src":"3023:266:120","nodes":[],"statements":[{"assignments":[68025],"declarations":[{"constant":false,"id":68025,"mutability":"mutable","name":"router","nameLocation":"3049:6:120","nodeType":"VariableDeclaration","scope":68056,"src":"3033:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68024,"nodeType":"UserDefinedTypeName","pathNode":{"id":68023,"name":"Storage","nameLocations":["3033:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"3033:7:120"},"referencedDeclaration":65250,"src":"3033:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68028,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68026,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"3058:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3058:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3033:34:120"},{"body":{"id":68052,"nodeType":"Block","src":"3127:134:120","statements":[{"condition":{"id":68047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3145:59:120","subExpression":{"baseExpression":{"expression":{"expression":{"id":68040,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68025,"src":"3146:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68041,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3153:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"3146:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68042,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3172:16:120","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":69376,"src":"3146:42:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":68046,"indexExpression":{"baseExpression":{"id":68043,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68018,"src":"3189:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68045,"indexExpression":{"id":68044,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68030,"src":"3201:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3189:14:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3146:58:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68051,"nodeType":"IfStatement","src":"3141:110:120","trueBody":{"id":68050,"nodeType":"Block","src":"3206:45:120","statements":[{"expression":{"hexValue":"66616c7365","id":68048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3231:5:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":68022,"id":68049,"nodeType":"Return","src":"3224:12:120"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68033,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68030,"src":"3098:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68034,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68018,"src":"3102:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3114:6:120","memberName":"length","nodeType":"MemberAccess","src":"3102:18:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3098:22:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68053,"initializationExpression":{"assignments":[68030],"declarations":[{"constant":false,"id":68030,"mutability":"mutable","name":"i","nameLocation":"3091:1:120","nodeType":"VariableDeclaration","scope":68053,"src":"3083:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68029,"name":"uint256","nodeType":"ElementaryTypeName","src":"3083:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68032,"initialValue":{"hexValue":"30","id":68031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3095:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3083:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3122:3:120","subExpression":{"id":68037,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68030,"src":"3122:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68039,"nodeType":"ExpressionStatement","src":"3122:3:120"},"nodeType":"ForStatement","src":"3078:183:120"},{"expression":{"hexValue":"74727565","id":68054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3278:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":68022,"id":68055,"nodeType":"Return","src":"3271:11:120"}]},"baseFunctions":[65322],"functionSelector":"8f381dbe","implemented":true,"kind":"function","modifiers":[],"name":"areValidators","nameLocation":"2950:13:120","parameters":{"id":68019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68018,"mutability":"mutable","name":"_validators","nameLocation":"2983:11:120","nodeType":"VariableDeclaration","scope":68057,"src":"2964:30:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68016,"name":"address","nodeType":"ElementaryTypeName","src":"2964:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68017,"nodeType":"ArrayTypeName","src":"2964:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2963:32:120"},"returnParameters":{"id":68022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68021,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68057,"src":"3017:4:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":68020,"name":"bool","nodeType":"ElementaryTypeName","src":"3017:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3016:6:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68072,"nodeType":"FunctionDefinition","src":"3295:149:120","nodes":[],"body":{"id":68071,"nodeType":"Block","src":"3363:81:120","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68064,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"3380:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3380:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3390:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"3380:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3409:16:120","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":69376,"src":"3380:45:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":68069,"indexExpression":{"id":68068,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68059,"src":"3426:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3380:57:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":68063,"id":68070,"nodeType":"Return","src":"3373:64:120"}]},"baseFunctions":[65329],"functionSelector":"facd743b","implemented":true,"kind":"function","modifiers":[],"name":"isValidator","nameLocation":"3304:11:120","parameters":{"id":68060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68059,"mutability":"mutable","name":"_validator","nameLocation":"3324:10:120","nodeType":"VariableDeclaration","scope":68072,"src":"3316:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68058,"name":"address","nodeType":"ElementaryTypeName","src":"3316:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3315:20:120"},"returnParameters":{"id":68063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68062,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68072,"src":"3357:4:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":68061,"name":"bool","nodeType":"ElementaryTypeName","src":"3357:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3356:6:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68083,"nodeType":"FunctionDefinition","src":"3450:146:120","nodes":[],"body":{"id":68082,"nodeType":"Block","src":"3517:79:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68077,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"3534:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3534:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68079,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3544:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"3534:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68080,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3563:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69369,"src":"3534:55:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":68076,"id":68081,"nodeType":"Return","src":"3527:62:120"}]},"baseFunctions":[65334],"functionSelector":"efd81abc","implemented":true,"kind":"function","modifiers":[],"name":"signingThresholdPercentage","nameLocation":"3459:26:120","parameters":{"id":68073,"nodeType":"ParameterList","parameters":[],"src":"3485:2:120"},"returnParameters":{"id":68076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68075,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68083,"src":"3509:6:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":68074,"name":"uint16","nodeType":"ElementaryTypeName","src":"3509:6:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"3508:8:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68095,"nodeType":"FunctionDefinition","src":"3602:124:120","nodes":[],"body":{"id":68094,"nodeType":"Block","src":"3663:63:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68089,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"3680:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3680:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68091,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3690:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"3680:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3709:10:120","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":69372,"src":"3680:39:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":68088,"id":68093,"nodeType":"Return","src":"3673:46:120"}]},"baseFunctions":[65340],"functionSelector":"ca1e7819","implemented":true,"kind":"function","modifiers":[],"name":"validators","nameLocation":"3611:10:120","parameters":{"id":68084,"nodeType":"ParameterList","parameters":[],"src":"3621:2:120"},"returnParameters":{"id":68088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68095,"src":"3645:16:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68085,"name":"address","nodeType":"ElementaryTypeName","src":"3645:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68086,"nodeType":"ArrayTypeName","src":"3645:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3644:18:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68107,"nodeType":"FunctionDefinition","src":"3732:127:120","nodes":[],"body":{"id":68106,"nodeType":"Block","src":"3789:70:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68100,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"3806:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3806:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68102,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3816:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"3806:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68103,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3835:10:120","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":69372,"src":"3806:39:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":68104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3846:6:120","memberName":"length","nodeType":"MemberAccess","src":"3806:46:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68099,"id":68105,"nodeType":"Return","src":"3799:53:120"}]},"baseFunctions":[65345],"functionSelector":"ed612f8c","implemented":true,"kind":"function","modifiers":[],"name":"validatorsCount","nameLocation":"3741:15:120","parameters":{"id":68096,"nodeType":"ParameterList","parameters":[],"src":"3756:2:120"},"returnParameters":{"id":68099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68107,"src":"3780:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68097,"name":"uint256","nodeType":"ElementaryTypeName","src":"3780:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3779:9:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68120,"nodeType":"FunctionDefinition","src":"3865:141:120","nodes":[],"body":{"id":68119,"nodeType":"Block","src":"3926:80:120","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68114,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"3970:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3970:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68116,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3980:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"3970:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}],"expression":{"id":68112,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"3943:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":68113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3948:21:120","memberName":"validatorsThresholdOf","nodeType":"MemberAccess","referencedDeclaration":69696,"src":"3943:26:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_ValidationSettings_$69377_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct Gear.ValidationSettings storage pointer) view returns (uint256)"}},"id":68117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3943:56:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68111,"id":68118,"nodeType":"Return","src":"3936:63:120"}]},"baseFunctions":[65350],"functionSelector":"edc87225","implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"3874:19:120","parameters":{"id":68108,"nodeType":"ParameterList","parameters":[],"src":"3893:2:120"},"returnParameters":{"id":68111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68110,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68120,"src":"3917:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68109,"name":"uint256","nodeType":"ElementaryTypeName","src":"3917:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3916:9:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68131,"nodeType":"FunctionDefinition","src":"4012:130:120","nodes":[],"body":{"id":68130,"nodeType":"Block","src":"4093:49:120","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68126,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"4110:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4110:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68128,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4120:15:120","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65245,"src":"4110:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69311_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"functionReturnParameters":68125,"id":68129,"nodeType":"Return","src":"4103:32:120"}]},"baseFunctions":[65356],"functionSelector":"84d22a4f","implemented":true,"kind":"function","modifiers":[],"name":"computeSettings","nameLocation":"4021:15:120","parameters":{"id":68121,"nodeType":"ParameterList","parameters":[],"src":"4036:2:120"},"returnParameters":{"id":68125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68131,"src":"4060:31:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69311_memory_ptr","typeString":"struct Gear.ComputationSettings"},"typeName":{"id":68123,"nodeType":"UserDefinedTypeName","pathNode":{"id":68122,"name":"Gear.ComputationSettings","nameLocations":["4060:4:120","4065:19:120"],"nodeType":"IdentifierPath","referencedDeclaration":69311,"src":"4060:24:120"},"referencedDeclaration":69311,"src":"4060:24:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69311_storage_ptr","typeString":"struct Gear.ComputationSettings"}},"visibility":"internal"}],"src":"4059:33:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68147,"nodeType":"FunctionDefinition","src":"4148:134:120","nodes":[],"body":{"id":68146,"nodeType":"Block","src":"4221:61:120","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68139,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"4238:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4238:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68141,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4248:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"4238:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68142,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4261:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69335,"src":"4238:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69301_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68144,"indexExpression":{"id":68143,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68133,"src":"4267:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4238:37:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"functionReturnParameters":68138,"id":68145,"nodeType":"Return","src":"4231:44:120"}]},"baseFunctions":[65364],"functionSelector":"c13911e8","implemented":true,"kind":"function","modifiers":[],"name":"codeState","nameLocation":"4157:9:120","parameters":{"id":68134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68133,"mutability":"mutable","name":"_codeId","nameLocation":"4175:7:120","nodeType":"VariableDeclaration","scope":68147,"src":"4167:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68132,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4167:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4166:17:120"},"returnParameters":{"id":68138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68137,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68147,"src":"4205:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"},"typeName":{"id":68136,"nodeType":"UserDefinedTypeName","pathNode":{"id":68135,"name":"Gear.CodeState","nameLocations":["4205:4:120","4210:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69301,"src":"4205:14:120"},"referencedDeclaration":69301,"src":"4205:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"visibility":"internal"}],"src":"4204:16:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68205,"nodeType":"FunctionDefinition","src":"4288:378:120","nodes":[],"body":{"id":68204,"nodeType":"Block","src":"4385:281:120","nodes":[],"statements":[{"assignments":[68159],"declarations":[{"constant":false,"id":68159,"mutability":"mutable","name":"router","nameLocation":"4411:6:120","nodeType":"VariableDeclaration","scope":68204,"src":"4395:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68158,"nodeType":"UserDefinedTypeName","pathNode":{"id":68157,"name":"Storage","nameLocations":["4395:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"4395:7:120"},"referencedDeclaration":65250,"src":"4395:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68162,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68160,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"4420:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4420:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4395:34:120"},{"assignments":[68168],"declarations":[{"constant":false,"id":68168,"mutability":"mutable","name":"res","nameLocation":"4464:3:120","nodeType":"VariableDeclaration","scope":68204,"src":"4440:27:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69301_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":68166,"nodeType":"UserDefinedTypeName","pathNode":{"id":68165,"name":"Gear.CodeState","nameLocations":["4440:4:120","4445:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69301,"src":"4440:14:120"},"referencedDeclaration":69301,"src":"4440:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"id":68167,"nodeType":"ArrayTypeName","src":"4440:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69301_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"id":68176,"initialValue":{"arguments":[{"expression":{"id":68173,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68150,"src":"4491:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":68174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4501:6:120","memberName":"length","nodeType":"MemberAccess","src":"4491:16:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4470:20:120","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_enum$_CodeState_$69301_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (enum Gear.CodeState[] memory)"},"typeName":{"baseType":{"id":68170,"nodeType":"UserDefinedTypeName","pathNode":{"id":68169,"name":"Gear.CodeState","nameLocations":["4474:4:120","4479:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69301,"src":"4474:14:120"},"referencedDeclaration":69301,"src":"4474:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"id":68171,"nodeType":"ArrayTypeName","src":"4474:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69301_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}}},"id":68175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4470:38:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69301_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4440:68:120"},{"body":{"id":68200,"nodeType":"Block","src":"4566:73:120","statements":[{"expression":{"id":68198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":68188,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68168,"src":"4580:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69301_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"id":68190,"indexExpression":{"id":68189,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68178,"src":"4584:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4580:6:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":68191,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68159,"src":"4589:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4596:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"4589:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4609:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69335,"src":"4589:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69301_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68197,"indexExpression":{"baseExpression":{"id":68194,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68150,"src":"4615:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":68196,"indexExpression":{"id":68195,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68178,"src":"4625:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4615:12:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4589:39:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"src":"4580:48:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"id":68199,"nodeType":"ExpressionStatement","src":"4580:48:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68181,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68178,"src":"4539:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68182,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68150,"src":"4543:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":68183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4553:6:120","memberName":"length","nodeType":"MemberAccess","src":"4543:16:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4539:20:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68201,"initializationExpression":{"assignments":[68178],"declarations":[{"constant":false,"id":68178,"mutability":"mutable","name":"i","nameLocation":"4532:1:120","nodeType":"VariableDeclaration","scope":68201,"src":"4524:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68177,"name":"uint256","nodeType":"ElementaryTypeName","src":"4524:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68180,"initialValue":{"hexValue":"30","id":68179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4536:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4524:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4561:3:120","subExpression":{"id":68185,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68178,"src":"4561:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68187,"nodeType":"ExpressionStatement","src":"4561:3:120"},"nodeType":"ForStatement","src":"4519:120:120"},{"expression":{"id":68202,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68168,"src":"4656:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69301_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"functionReturnParameters":68156,"id":68203,"nodeType":"Return","src":"4649:10:120"}]},"baseFunctions":[65374],"functionSelector":"82bdeaad","implemented":true,"kind":"function","modifiers":[],"name":"codesStates","nameLocation":"4297:11:120","parameters":{"id":68151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68150,"mutability":"mutable","name":"_codesIds","nameLocation":"4328:9:120","nodeType":"VariableDeclaration","scope":68205,"src":"4309:28:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":68148,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4309:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68149,"nodeType":"ArrayTypeName","src":"4309:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"4308:30:120"},"returnParameters":{"id":68156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68155,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68205,"src":"4360:23:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69301_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":68153,"nodeType":"UserDefinedTypeName","pathNode":{"id":68152,"name":"Gear.CodeState","nameLocations":["4360:4:120","4365:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69301,"src":"4360:14:120"},"referencedDeclaration":69301,"src":"4360:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"id":68154,"nodeType":"ArrayTypeName","src":"4360:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69301_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"src":"4359:25:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68220,"nodeType":"FunctionDefinition","src":"4672:140:120","nodes":[],"body":{"id":68219,"nodeType":"Block","src":"4745:67:120","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68212,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"4762:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4762:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68214,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4772:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"4762:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68215,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4785:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69339,"src":"4762:31:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":68217,"indexExpression":{"id":68216,"name":"_programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68207,"src":"4794:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4762:43:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":68211,"id":68218,"nodeType":"Return","src":"4755:50:120"}]},"baseFunctions":[65381],"functionSelector":"9067088e","implemented":true,"kind":"function","modifiers":[],"name":"programCodeId","nameLocation":"4681:13:120","parameters":{"id":68208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68207,"mutability":"mutable","name":"_programId","nameLocation":"4703:10:120","nodeType":"VariableDeclaration","scope":68220,"src":"4695:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68206,"name":"address","nodeType":"ElementaryTypeName","src":"4695:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4694:20:120"},"returnParameters":{"id":68211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68210,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68220,"src":"4736:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68209,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4736:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4735:9:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68275,"nodeType":"FunctionDefinition","src":"4818:376:120","nodes":[],"body":{"id":68274,"nodeType":"Block","src":"4915:279:120","nodes":[],"statements":[{"assignments":[68231],"declarations":[{"constant":false,"id":68231,"mutability":"mutable","name":"router","nameLocation":"4941:6:120","nodeType":"VariableDeclaration","scope":68274,"src":"4925:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68230,"nodeType":"UserDefinedTypeName","pathNode":{"id":68229,"name":"Storage","nameLocations":["4925:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"4925:7:120"},"referencedDeclaration":65250,"src":"4925:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68234,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68232,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"4950:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4950:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4925:34:120"},{"assignments":[68239],"declarations":[{"constant":false,"id":68239,"mutability":"mutable","name":"res","nameLocation":"4987:3:120","nodeType":"VariableDeclaration","scope":68274,"src":"4970:20:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":68237,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4970:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68238,"nodeType":"ArrayTypeName","src":"4970:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":68246,"initialValue":{"arguments":[{"expression":{"id":68243,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68223,"src":"5007:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5020:6:120","memberName":"length","nodeType":"MemberAccess","src":"5007:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4993:13:120","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":68240,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4997:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68241,"nodeType":"ArrayTypeName","src":"4997:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":68245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4993:34:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4970:57:120"},{"body":{"id":68270,"nodeType":"Block","src":"5088:79:120","statements":[{"expression":{"id":68268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":68258,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68239,"src":"5102:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":68260,"indexExpression":{"id":68259,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68248,"src":"5106:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5102:6:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":68261,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68231,"src":"5111:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5118:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"5111:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68263,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5131:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69339,"src":"5111:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":68267,"indexExpression":{"baseExpression":{"id":68264,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68223,"src":"5140:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68266,"indexExpression":{"id":68265,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68248,"src":"5153:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5140:15:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5111:45:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5102:54:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68269,"nodeType":"ExpressionStatement","src":"5102:54:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68251,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68248,"src":"5058:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68252,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68223,"src":"5062:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5075:6:120","memberName":"length","nodeType":"MemberAccess","src":"5062:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5058:23:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68271,"initializationExpression":{"assignments":[68248],"declarations":[{"constant":false,"id":68248,"mutability":"mutable","name":"i","nameLocation":"5051:1:120","nodeType":"VariableDeclaration","scope":68271,"src":"5043:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68247,"name":"uint256","nodeType":"ElementaryTypeName","src":"5043:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68250,"initialValue":{"hexValue":"30","id":68249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5055:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5043:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5083:3:120","subExpression":{"id":68255,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68248,"src":"5083:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68257,"nodeType":"ExpressionStatement","src":"5083:3:120"},"nodeType":"ForStatement","src":"5038:129:120"},{"expression":{"id":68272,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68239,"src":"5184:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":68228,"id":68273,"nodeType":"Return","src":"5177:10:120"}]},"baseFunctions":[65390],"functionSelector":"baaf0201","implemented":true,"kind":"function","modifiers":[],"name":"programsCodeIds","nameLocation":"4827:15:120","parameters":{"id":68224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68223,"mutability":"mutable","name":"_programsIds","nameLocation":"4862:12:120","nodeType":"VariableDeclaration","scope":68275,"src":"4843:31:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68221,"name":"address","nodeType":"ElementaryTypeName","src":"4843:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68222,"nodeType":"ArrayTypeName","src":"4843:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4842:33:120"},"returnParameters":{"id":68228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68227,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68275,"src":"4897:16:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":68225,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4897:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68226,"nodeType":"ArrayTypeName","src":"4897:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"4896:18:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68286,"nodeType":"FunctionDefinition","src":"5200:115:120","nodes":[],"body":{"id":68285,"nodeType":"Block","src":"5255:60:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68280,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"5272:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5272:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68282,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5282:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"5272:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68283,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5295:13:120","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":69341,"src":"5272:36:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68279,"id":68284,"nodeType":"Return","src":"5265:43:120"}]},"baseFunctions":[65395],"functionSelector":"96a2ddfa","implemented":true,"kind":"function","modifiers":[],"name":"programsCount","nameLocation":"5209:13:120","parameters":{"id":68276,"nodeType":"ParameterList","parameters":[],"src":"5222:2:120"},"returnParameters":{"id":68279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68278,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68286,"src":"5246:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68277,"name":"uint256","nodeType":"ElementaryTypeName","src":"5246:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5245:9:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68297,"nodeType":"FunctionDefinition","src":"5321:127:120","nodes":[],"body":{"id":68296,"nodeType":"Block","src":"5382:66:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68291,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"5399:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5399:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68293,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5409:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"5399:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68294,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5422:19:120","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":69343,"src":"5399:42:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68290,"id":68295,"nodeType":"Return","src":"5392:49:120"}]},"baseFunctions":[65400],"functionSelector":"007a32e7","implemented":true,"kind":"function","modifiers":[],"name":"validatedCodesCount","nameLocation":"5330:19:120","parameters":{"id":68287,"nodeType":"ParameterList","parameters":[],"src":"5349:2:120"},"returnParameters":{"id":68290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68289,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68297,"src":"5373:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68288,"name":"uint256","nodeType":"ElementaryTypeName","src":"5373:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5372:9:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68312,"nodeType":"FunctionDefinition","src":"5474:116:120","nodes":[],"body":{"id":68311,"nodeType":"Block","src":"5531:59:120","nodes":[],"statements":[{"expression":{"id":68309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68304,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"5541:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5541:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5551:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65237,"src":"5541:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69279_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68307,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5565:6:120","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":69274,"src":"5541:30:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":68308,"name":"newMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68299,"src":"5574:9:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5541:42:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68310,"nodeType":"ExpressionStatement","src":"5541:42:120"}]},"baseFunctions":[65405],"functionSelector":"3d43b418","implemented":true,"kind":"function","modifiers":[{"id":68302,"kind":"modifierInvocation","modifierName":{"id":68301,"name":"onlyOwner","nameLocations":["5521:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"5521:9:120"},"nodeType":"ModifierInvocation","src":"5521:9:120"}],"name":"setMirror","nameLocation":"5483:9:120","parameters":{"id":68300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68299,"mutability":"mutable","name":"newMirror","nameLocation":"5501:9:120","nodeType":"VariableDeclaration","scope":68312,"src":"5493:17:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68298,"name":"address","nodeType":"ElementaryTypeName","src":"5493:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5492:19:120"},"returnParameters":{"id":68303,"nodeType":"ParameterList","parameters":[],"src":"5531:0:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68364,"nodeType":"FunctionDefinition","src":"5612:398:120","nodes":[],"body":{"id":68363,"nodeType":"Block","src":"5650:360:120","nodes":[],"statements":[{"assignments":[68317],"declarations":[{"constant":false,"id":68317,"mutability":"mutable","name":"router","nameLocation":"5676:6:120","nodeType":"VariableDeclaration","scope":68363,"src":"5660:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68316,"nodeType":"UserDefinedTypeName","pathNode":{"id":68315,"name":"Storage","nameLocations":["5660:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"5660:7:120"},"referencedDeclaration":65250,"src":"5660:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68320,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68318,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"5685:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5685:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5660:34:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68322,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68317,"src":"5713:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68323,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5720:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65229,"src":"5713:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69318_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68324,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5733:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69313,"src":"5713:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":68327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5749:1:120","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":68326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5741:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68325,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5741:7:120","typeDescriptions":{}}},"id":68328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5741:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5713:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"67656e65736973206861736820616c726561647920736574","id":68330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5753:26:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ec654a5a6e0b043639db348d1557e0acfcdb8bbf2c9de24c4983866c0ccfa21","typeString":"literal_string \"genesis hash already set\""},"value":"genesis hash already set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5ec654a5a6e0b043639db348d1557e0acfcdb8bbf2c9de24c4983866c0ccfa21","typeString":"literal_string \"genesis hash already set\""}],"id":68321,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5705:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5705:75:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68332,"nodeType":"ExpressionStatement","src":"5705:75:120"},{"assignments":[68334],"declarations":[{"constant":false,"id":68334,"mutability":"mutable","name":"genesisHash","nameLocation":"5799:11:120","nodeType":"VariableDeclaration","scope":68363,"src":"5791:19:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68333,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5791:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":68340,"initialValue":{"arguments":[{"expression":{"expression":{"id":68336,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68317,"src":"5823:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5830:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65229,"src":"5823:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69318_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5843:6:120","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":69315,"src":"5823:26:120","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":68335,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"5813:9:120","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":68339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5813:37:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5791:59:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68342,"name":"genesisHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68334,"src":"5869:11:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5892:1:120","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":68344,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5884:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68343,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5884:7:120","typeDescriptions":{}}},"id":68346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5884:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5869:25:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"756e61626c6520746f206c6f6f6b75702067656e657369732068617368","id":68348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5896:31:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_983585e130902c48e8b21c3e7ab53cd0d7f3ffc3109244b201330c039df8ce4e","typeString":"literal_string \"unable to lookup genesis hash\""},"value":"unable to lookup genesis hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_983585e130902c48e8b21c3e7ab53cd0d7f3ffc3109244b201330c039df8ce4e","typeString":"literal_string \"unable to lookup genesis hash\""}],"id":68341,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5861:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5861:67:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68350,"nodeType":"ExpressionStatement","src":"5861:67:120"},{"expression":{"id":68361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":68351,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68317,"src":"5939:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5946:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65229,"src":"5939:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69318_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68355,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5959:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69313,"src":"5939:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":68357,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68317,"src":"5976:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5983:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65229,"src":"5976:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69318_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68359,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5996:6:120","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":69315,"src":"5976:26:120","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":68356,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"5966:9:120","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":68360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5966:37:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5939:64:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68362,"nodeType":"ExpressionStatement","src":"5939:64:120"}]},"baseFunctions":[65408],"functionSelector":"8b1edf1e","implemented":true,"kind":"function","modifiers":[],"name":"lookupGenesisHash","nameLocation":"5621:17:120","parameters":{"id":68313,"nodeType":"ParameterList","parameters":[],"src":"5638:2:120"},"returnParameters":{"id":68314,"nodeType":"ParameterList","parameters":[],"src":"5650:0:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68433,"nodeType":"FunctionDefinition","src":"6016:637:120","nodes":[],"body":{"id":68432,"nodeType":"Block","src":"6094:559:120","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":68380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68372,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68368,"src":"6112:11:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":68373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6127:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6112:16:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":68376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6141:1:120","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":68375,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"6132:8:120","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":68377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6132:11:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":68378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6147:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6132:16:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6112:36:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"626c6f622063616e277420626520666f756e64","id":68381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6150:21:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_50f679c075644435e0dfad2beb36f786441d5cb0c0dd08ea9c9aa80169c123d2","typeString":"literal_string \"blob can't be found\""},"value":"blob can't be found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50f679c075644435e0dfad2beb36f786441d5cb0c0dd08ea9c9aa80169c123d2","typeString":"literal_string \"blob can't be found\""}],"id":68371,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6104:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6104:68:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68383,"nodeType":"ExpressionStatement","src":"6104:68:120"},{"assignments":[68386],"declarations":[{"constant":false,"id":68386,"mutability":"mutable","name":"router","nameLocation":"6199:6:120","nodeType":"VariableDeclaration","scope":68432,"src":"6183:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68385,"nodeType":"UserDefinedTypeName","pathNode":{"id":68384,"name":"Storage","nameLocations":["6183:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"6183:7:120"},"referencedDeclaration":65250,"src":"6183:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68389,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68387,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"6208:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6208:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6183:34:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68391,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68386,"src":"6235:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68392,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6242:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65229,"src":"6235:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69318_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68393,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6255:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69313,"src":"6235:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6271:1:120","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":68395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6263:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68394,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6263:7:120","typeDescriptions":{}}},"id":68397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6263:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6235:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":68399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6275:58:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":68390,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6227:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6227:107:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68401,"nodeType":"ExpressionStatement","src":"6227:107:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"},"id":68411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":68403,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68386,"src":"6366:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68404,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6373:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"6366:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68405,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6386:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69335,"src":"6366:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69301_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68407,"indexExpression":{"id":68406,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68366,"src":"6392:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6366:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":68408,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"6404:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":68409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6409:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69301,"src":"6404:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69301_$","typeString":"type(enum Gear.CodeState)"}},"id":68410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6419:7:120","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":69298,"src":"6404:22:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"src":"6366:60:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"676976656e20636f646520696420697320616c7265616479206f6e2076616c69646174696f6e206f722076616c696461746564","id":68412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6440:53:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_6767c8b133cc7e7263c64dbd155947c93c4fdbe1adf907d9d3428673190ae536","typeString":"literal_string \"given code id is already on validation or validated\""},"value":"given code id is already on validation or validated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6767c8b133cc7e7263c64dbd155947c93c4fdbe1adf907d9d3428673190ae536","typeString":"literal_string \"given code id is already on validation or validated\""}],"id":68402,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6345:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6345:158:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68414,"nodeType":"ExpressionStatement","src":"6345:158:120"},{"expression":{"id":68425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":68415,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68386,"src":"6514:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68419,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6521:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"6514:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68420,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6534:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69335,"src":"6514:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69301_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68421,"indexExpression":{"id":68418,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68366,"src":"6540:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6514:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":68422,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"6551:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":68423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6556:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69301,"src":"6551:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69301_$","typeString":"type(enum Gear.CodeState)"}},"id":68424,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6566:19:120","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":69299,"src":"6551:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"src":"6514:71:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"id":68426,"nodeType":"ExpressionStatement","src":"6514:71:120"},{"eventCall":{"arguments":[{"id":68428,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68366,"src":"6625:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68429,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68368,"src":"6634:11:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68427,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65269,"src":"6601:23:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":68430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6601:45:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68431,"nodeType":"EmitStatement","src":"6596:50:120"}]},"baseFunctions":[65416],"functionSelector":"1c149d8a","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidation","nameLocation":"6025:21:120","parameters":{"id":68369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68366,"mutability":"mutable","name":"_codeId","nameLocation":"6055:7:120","nodeType":"VariableDeclaration","scope":68433,"src":"6047:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68365,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6047:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68368,"mutability":"mutable","name":"_blobTxHash","nameLocation":"6072:11:120","nodeType":"VariableDeclaration","scope":68433,"src":"6064:19:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68367,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6064:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6046:38:120"},"returnParameters":{"id":68370,"nodeType":"ParameterList","parameters":[],"src":"6094:0:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68464,"nodeType":"FunctionDefinition","src":"6659:231:120","nodes":[],"body":{"id":68463,"nodeType":"Block","src":"6741:149:120","nodes":[],"statements":[{"assignments":[68443],"declarations":[{"constant":false,"id":68443,"mutability":"mutable","name":"mirror","nameLocation":"6759:6:120","nodeType":"VariableDeclaration","scope":68463,"src":"6751:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68442,"name":"address","nodeType":"ElementaryTypeName","src":"6751:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68448,"initialValue":{"arguments":[{"id":68445,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68435,"src":"6783:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68446,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68437,"src":"6792:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68444,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68800,"src":"6768:14:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,bytes32) returns (address)"}},"id":68447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6768:30:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6751:47:120"},{"expression":{"arguments":[{"expression":{"id":68453,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6836:3:120","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":68454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6840:6:120","memberName":"sender","nodeType":"MemberAccess","src":"6836:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":68457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6856:1:120","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":68456,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6848:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":68455,"name":"address","nodeType":"ElementaryTypeName","src":"6848:7:120","typeDescriptions":{}}},"id":68458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6848:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":68450,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68443,"src":"6817:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":68449,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65176,"src":"6809:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$65176_$","typeString":"type(contract IMirror)"}},"id":68451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6809:15:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$65176","typeString":"contract IMirror"}},"id":68452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6825:10:120","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":65167,"src":"6809:26:120","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":68459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6809:50:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68460,"nodeType":"ExpressionStatement","src":"6809:50:120"},{"expression":{"id":68461,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68443,"src":"6877:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68441,"id":68462,"nodeType":"Return","src":"6870:13:120"}]},"baseFunctions":[65426],"functionSelector":"527de0f9","implemented":true,"kind":"function","modifiers":[],"name":"createProgram","nameLocation":"6668:13:120","parameters":{"id":68438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68435,"mutability":"mutable","name":"_codeId","nameLocation":"6690:7:120","nodeType":"VariableDeclaration","scope":68464,"src":"6682:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68434,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6682:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68437,"mutability":"mutable","name":"_salt","nameLocation":"6707:5:120","nodeType":"VariableDeclaration","scope":68464,"src":"6699:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68436,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6699:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6681:32:120"},"returnParameters":{"id":68441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68440,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68464,"src":"6732:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68439,"name":"address","nodeType":"ElementaryTypeName","src":"6732:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6731:9:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68507,"nodeType":"FunctionDefinition","src":"6896:382:120","nodes":[],"body":{"id":68506,"nodeType":"Block","src":"7031:247:120","nodes":[],"statements":[{"assignments":[68476],"declarations":[{"constant":false,"id":68476,"mutability":"mutable","name":"mirror","nameLocation":"7049:6:120","nodeType":"VariableDeclaration","scope":68506,"src":"7041:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68475,"name":"address","nodeType":"ElementaryTypeName","src":"7041:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68481,"initialValue":{"arguments":[{"id":68478,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68468,"src":"7073:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68479,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68470,"src":"7082:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68477,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68800,"src":"7058:14:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,bytes32) returns (address)"}},"id":68480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7058:30:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7041:47:120"},{"assignments":[68483],"declarations":[{"constant":false,"id":68483,"mutability":"mutable","name":"decoder","nameLocation":"7106:7:120","nodeType":"VariableDeclaration","scope":68506,"src":"7098:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68482,"name":"address","nodeType":"ElementaryTypeName","src":"7098:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68494,"initialValue":{"arguments":[{"id":68485,"name":"_decoderImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68466,"src":"7131:12:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":68489,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68468,"src":"7172:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68490,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68470,"src":"7181:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68487,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7155:3:120","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":68488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7159:12:120","memberName":"encodePacked","nodeType":"MemberAccess","src":"7155:16:120","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":68491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7155:32:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68486,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7145:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":68492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7145:43:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68484,"name":"_createDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68826,"src":"7116:14:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":68493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7116:73:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7098:91:120"},{"expression":{"arguments":[{"expression":{"id":68499,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7227:3:120","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":68500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7231:6:120","memberName":"sender","nodeType":"MemberAccess","src":"7227:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":68501,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68483,"src":"7239:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":68496,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68476,"src":"7208:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":68495,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65176,"src":"7200:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$65176_$","typeString":"type(contract IMirror)"}},"id":68497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7200:15:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$65176","typeString":"contract IMirror"}},"id":68498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7216:10:120","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":65167,"src":"7200:26:120","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":68502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7200:47:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68503,"nodeType":"ExpressionStatement","src":"7200:47:120"},{"expression":{"id":68504,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68476,"src":"7265:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68474,"id":68505,"nodeType":"Return","src":"7258:13:120"}]},"baseFunctions":[65438],"functionSelector":"e7006a74","implemented":true,"kind":"function","modifiers":[],"name":"createProgramWithDecoder","nameLocation":"6905:24:120","parameters":{"id":68471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68466,"mutability":"mutable","name":"_decoderImpl","nameLocation":"6938:12:120","nodeType":"VariableDeclaration","scope":68507,"src":"6930:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68465,"name":"address","nodeType":"ElementaryTypeName","src":"6930:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":68468,"mutability":"mutable","name":"_codeId","nameLocation":"6960:7:120","nodeType":"VariableDeclaration","scope":68507,"src":"6952:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68467,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6952:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68470,"mutability":"mutable","name":"_salt","nameLocation":"6977:5:120","nodeType":"VariableDeclaration","scope":68507,"src":"6969:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68469,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6969:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6929:54:120"},"returnParameters":{"id":68474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68473,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68507,"src":"7018:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68472,"name":"address","nodeType":"ElementaryTypeName","src":"7018:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7017:9:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68639,"nodeType":"FunctionDefinition","src":"7311:1336:120","nodes":[],"body":{"id":68638,"nodeType":"Block","src":"7420:1227:120","nodes":[],"statements":[{"assignments":[68519],"declarations":[{"constant":false,"id":68519,"mutability":"mutable","name":"router","nameLocation":"7446:6:120","nodeType":"VariableDeclaration","scope":68638,"src":"7430:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68518,"nodeType":"UserDefinedTypeName","pathNode":{"id":68517,"name":"Storage","nameLocations":["7430:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"7430:7:120"},"referencedDeclaration":65250,"src":"7430:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68522,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68520,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"7455:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7455:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7430:34:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68524,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68519,"src":"7482:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68525,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7489:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65229,"src":"7482:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69318_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68526,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7502:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69313,"src":"7482:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7518:1:120","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":68528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7510:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68527,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7510:7:120","typeDescriptions":{}}},"id":68530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7510:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7482:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":68532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7522:58:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":68523,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7474:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7474:107:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68534,"nodeType":"ExpressionStatement","src":"7474:107:120"},{"assignments":[68536],"declarations":[{"constant":false,"id":68536,"mutability":"mutable","name":"codeCommitmentsHashes","nameLocation":"7605:21:120","nodeType":"VariableDeclaration","scope":68638,"src":"7592:34:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":68535,"name":"bytes","nodeType":"ElementaryTypeName","src":"7592:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":68537,"nodeType":"VariableDeclarationStatement","src":"7592:34:120"},{"body":{"id":68624,"nodeType":"Block","src":"7691:784:120","statements":[{"assignments":[68553],"declarations":[{"constant":false,"id":68553,"mutability":"mutable","name":"codeCommitment","nameLocation":"7734:14:120","nodeType":"VariableDeclaration","scope":68624,"src":"7705:43:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69297_calldata_ptr","typeString":"struct Gear.CodeCommitment"},"typeName":{"id":68552,"nodeType":"UserDefinedTypeName","pathNode":{"id":68551,"name":"Gear.CodeCommitment","nameLocations":["7705:4:120","7710:14:120"],"nodeType":"IdentifierPath","referencedDeclaration":69297,"src":"7705:19:120"},"referencedDeclaration":69297,"src":"7705:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69297_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"visibility":"internal"}],"id":68557,"initialValue":{"baseExpression":{"id":68554,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68511,"src":"7751:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69297_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":68556,"indexExpression":{"id":68555,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68539,"src":"7768:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7751:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69297_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"7705:65:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"},"id":68568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":68559,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68519,"src":"7810:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7817:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"7810:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68561,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7830:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69335,"src":"7810:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69301_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68564,"indexExpression":{"expression":{"id":68562,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68553,"src":"7836:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69297_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7851:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69294,"src":"7836:17:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7810:44:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":68565,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"7858:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":68566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7863:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69301,"src":"7858:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69301_$","typeString":"type(enum Gear.CodeState)"}},"id":68567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7873:19:120","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":69299,"src":"7858:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"src":"7810:82:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652072657175657374656420666f722076616c69646174696f6e20746f20626520636f6d6d6974746564","id":68569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7910:55:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_5641fde195ef857639d9de420cb3fc56957be6957a3c8a5e78a2243186a510e8","typeString":"literal_string \"code must be requested for validation to be committed\""},"value":"code must be requested for validation to be committed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5641fde195ef857639d9de420cb3fc56957be6957a3c8a5e78a2243186a510e8","typeString":"literal_string \"code must be requested for validation to be committed\""}],"id":68558,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7785:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7785:194:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68571,"nodeType":"ExpressionStatement","src":"7785:194:120"},{"condition":{"expression":{"id":68572,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68553,"src":"7998:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69297_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8013:5:120","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":69296,"src":"7998:20:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":68603,"nodeType":"Block","src":"8189:84:120","statements":[{"expression":{"id":68601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"8207:51:120","subExpression":{"baseExpression":{"expression":{"expression":{"id":68595,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68519,"src":"8214:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68596,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8221:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"8214:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68597,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8234:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69335,"src":"8214:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69301_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68600,"indexExpression":{"expression":{"id":68598,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68553,"src":"8240:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69297_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8255:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69294,"src":"8240:17:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8214:44:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68602,"nodeType":"ExpressionStatement","src":"8207:51:120"}]},"id":68604,"nodeType":"IfStatement","src":"7994:279:120","trueBody":{"id":68594,"nodeType":"Block","src":"8020:163:120","statements":[{"expression":{"id":68585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":68574,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68519,"src":"8038:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68579,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8045:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"8038:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68580,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8058:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69335,"src":"8038:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69301_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68581,"indexExpression":{"expression":{"id":68577,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68553,"src":"8064:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69297_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8079:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69294,"src":"8064:17:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8038:44:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":68582,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"8085:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":68583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8090:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69301,"src":"8085:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69301_$","typeString":"type(enum Gear.CodeState)"}},"id":68584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8100:9:120","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":69300,"src":"8085:24:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"src":"8038:71:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"id":68586,"nodeType":"ExpressionStatement","src":"8038:71:120"},{"expression":{"id":68592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8127:41:120","subExpression":{"expression":{"expression":{"id":68587,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68519,"src":"8127:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68590,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8134:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"8127:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8147:19:120","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":69343,"src":"8127:39:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68593,"nodeType":"ExpressionStatement","src":"8127:41:120"}]}},{"eventCall":{"arguments":[{"expression":{"id":68606,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68553,"src":"8309:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69297_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8324:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69294,"src":"8309:17:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":68608,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68553,"src":"8328:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69297_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8343:5:120","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":69296,"src":"8328:20:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":68605,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65262,"src":"8292:16:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":68610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8292:57:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68611,"nodeType":"EmitStatement","src":"8287:62:120"},{"expression":{"id":68622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":68612,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68536,"src":"8364:21:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":68616,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68536,"src":"8401:21:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":68619,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68553,"src":"8448:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69297_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CodeCommitment_$69297_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}],"expression":{"id":68617,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"8424:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":68618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8429:18:120","memberName":"codeCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":69474,"src":"8424:23:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_CodeCommitment_$69297_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.CodeCommitment calldata) pure returns (bytes32)"}},"id":68620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8424:39:120","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":68614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8388:5:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":68613,"name":"bytes","nodeType":"ElementaryTypeName","src":"8388:5:120","typeDescriptions":{}}},"id":68615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8394:6:120","memberName":"concat","nodeType":"MemberAccess","src":"8388:12:120","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":68621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8388:76:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8364:100:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":68623,"nodeType":"ExpressionStatement","src":"8364:100:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68542,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68539,"src":"7657:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68543,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68511,"src":"7661:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69297_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":68544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7678:6:120","memberName":"length","nodeType":"MemberAccess","src":"7661:23:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7657:27:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68625,"initializationExpression":{"assignments":[68539],"declarations":[{"constant":false,"id":68539,"mutability":"mutable","name":"i","nameLocation":"7650:1:120","nodeType":"VariableDeclaration","scope":68625,"src":"7642:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68538,"name":"uint256","nodeType":"ElementaryTypeName","src":"7642:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68541,"initialValue":{"hexValue":"30","id":68540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7654:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7642:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7686:3:120","subExpression":{"id":68546,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68539,"src":"7686:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68548,"nodeType":"ExpressionStatement","src":"7686:3:120"},"nodeType":"ForStatement","src":"7637:838:120"},{"expression":{"arguments":[{"arguments":[{"id":68629,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68519,"src":"8530:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":68631,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68536,"src":"8548:21:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68630,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8538:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":68632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8538:32:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68633,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68514,"src":"8572:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":68627,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"8506:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":68628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8511:18:120","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":69672,"src":"8506:23:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65250_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":68634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8506:78:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7369676e61747572657320766572696669636174696f6e206661696c6564","id":68635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8598:32:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""},"value":"signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""}],"id":68626,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8485:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8485:155:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68637,"nodeType":"ExpressionStatement","src":"8485:155:120"}]},"baseFunctions":[65449],"functionSelector":"e97d3eb3","implemented":true,"kind":"function","modifiers":[],"name":"commitCodes","nameLocation":"7320:11:120","parameters":{"id":68515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68511,"mutability":"mutable","name":"_codeCommitments","nameLocation":"7363:16:120","nodeType":"VariableDeclaration","scope":68639,"src":"7332:47:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69297_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment[]"},"typeName":{"baseType":{"id":68509,"nodeType":"UserDefinedTypeName","pathNode":{"id":68508,"name":"Gear.CodeCommitment","nameLocations":["7332:4:120","7337:14:120"],"nodeType":"IdentifierPath","referencedDeclaration":69297,"src":"7332:19:120"},"referencedDeclaration":69297,"src":"7332:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69297_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"id":68510,"nodeType":"ArrayTypeName","src":"7332:21:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69297_storage_$dyn_storage_ptr","typeString":"struct Gear.CodeCommitment[]"}},"visibility":"internal"},{"constant":false,"id":68514,"mutability":"mutable","name":"_signatures","nameLocation":"7398:11:120","nodeType":"VariableDeclaration","scope":68639,"src":"7381:28:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":68512,"name":"bytes","nodeType":"ElementaryTypeName","src":"7381:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":68513,"nodeType":"ArrayTypeName","src":"7381:7:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"7331:79:120"},"returnParameters":{"id":68516,"nodeType":"ParameterList","parameters":[],"src":"7420:0:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68719,"nodeType":"FunctionDefinition","src":"8653:798:120","nodes":[],"body":{"id":68718,"nodeType":"Block","src":"8798:653:120","nodes":[],"statements":[{"assignments":[68653],"declarations":[{"constant":false,"id":68653,"mutability":"mutable","name":"router","nameLocation":"8824:6:120","nodeType":"VariableDeclaration","scope":68718,"src":"8808:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68652,"nodeType":"UserDefinedTypeName","pathNode":{"id":68651,"name":"Storage","nameLocations":["8808:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"8808:7:120"},"referencedDeclaration":65250,"src":"8808:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68656,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68654,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"8833:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8833:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8808:34:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68658,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68653,"src":"8860:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68659,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8867:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65229,"src":"8860:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69318_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68660,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8880:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69313,"src":"8860:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8896:1:120","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":68662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8888:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68661,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8888:7:120","typeDescriptions":{}}},"id":68664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8888:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8860:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":68666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8900:58:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":68657,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8852:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8852:107:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68668,"nodeType":"ExpressionStatement","src":"8852:107:120"},{"assignments":[68670],"declarations":[{"constant":false,"id":68670,"mutability":"mutable","name":"blockCommitmentsHashes","nameLocation":"8983:22:120","nodeType":"VariableDeclaration","scope":68718,"src":"8970:35:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":68669,"name":"bytes","nodeType":"ElementaryTypeName","src":"8970:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":68671,"nodeType":"VariableDeclarationStatement","src":"8970:35:120"},{"body":{"id":68704,"nodeType":"Block","src":"9071:207:120","statements":[{"assignments":[68687],"declarations":[{"constant":false,"id":68687,"mutability":"mutable","name":"blockCommitment","nameLocation":"9115:15:120","nodeType":"VariableDeclaration","scope":68704,"src":"9085:45:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":68686,"nodeType":"UserDefinedTypeName","pathNode":{"id":68685,"name":"Gear.BlockCommitment","nameLocations":["9085:4:120","9090:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69292,"src":"9085:20:120"},"referencedDeclaration":69292,"src":"9085:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"id":68691,"initialValue":{"baseExpression":{"id":68688,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68643,"src":"9133:17:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69292_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":68690,"indexExpression":{"id":68689,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68673,"src":"9151:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9133:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"9085:68:120"},{"expression":{"id":68702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":68692,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68670,"src":"9167:22:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":68696,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68670,"src":"9205:22:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":68698,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68653,"src":"9242:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":68699,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68687,"src":"9250:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BlockCommitment_$69292_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}],"id":68697,"name":"_commitBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68895,"src":"9229:12:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$65250_storage_ptr_$_t_struct$_BlockCommitment_$69292_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BlockCommitment calldata) returns (bytes32)"}},"id":68700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9229:37:120","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":68694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9192:5:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":68693,"name":"bytes","nodeType":"ElementaryTypeName","src":"9192:5:120","typeDescriptions":{}}},"id":68695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9198:6:120","memberName":"concat","nodeType":"MemberAccess","src":"9192:12:120","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":68701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9192:75:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"9167:100:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":68703,"nodeType":"ExpressionStatement","src":"9167:100:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68676,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68673,"src":"9036:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68677,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68643,"src":"9040:17:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69292_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":68678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9058:6:120","memberName":"length","nodeType":"MemberAccess","src":"9040:24:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9036:28:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68705,"initializationExpression":{"assignments":[68673],"declarations":[{"constant":false,"id":68673,"mutability":"mutable","name":"i","nameLocation":"9029:1:120","nodeType":"VariableDeclaration","scope":68705,"src":"9021:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68672,"name":"uint256","nodeType":"ElementaryTypeName","src":"9021:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68675,"initialValue":{"hexValue":"30","id":68674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9033:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9021:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9066:3:120","subExpression":{"id":68680,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68673,"src":"9066:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68682,"nodeType":"ExpressionStatement","src":"9066:3:120"},"nodeType":"ForStatement","src":"9016:262:120"},{"expression":{"arguments":[{"arguments":[{"id":68709,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68653,"src":"9333:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":68711,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68670,"src":"9351:22:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68710,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9341:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":68712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9341:33:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68713,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68646,"src":"9376:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":68707,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"9309:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":68708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9314:18:120","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":69672,"src":"9309:23:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65250_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":68714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9309:79:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7369676e61747572657320766572696669636174696f6e206661696c6564","id":68715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9402:32:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""},"value":"signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""}],"id":68706,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9288:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9288:156:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68717,"nodeType":"ExpressionStatement","src":"9288:156:120"}]},"baseFunctions":[65460],"functionSelector":"c5a77c13","implemented":true,"kind":"function","modifiers":[{"id":68649,"kind":"modifierInvocation","modifierName":{"id":68648,"name":"nonReentrant","nameLocations":["8781:12:120"],"nodeType":"IdentifierPath","referencedDeclaration":44262,"src":"8781:12:120"},"nodeType":"ModifierInvocation","src":"8781:12:120"}],"name":"commitBlocks","nameLocation":"8662:12:120","parameters":{"id":68647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68643,"mutability":"mutable","name":"_blockCommitments","nameLocation":"8707:17:120","nodeType":"VariableDeclaration","scope":68719,"src":"8675:49:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69292_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment[]"},"typeName":{"baseType":{"id":68641,"nodeType":"UserDefinedTypeName","pathNode":{"id":68640,"name":"Gear.BlockCommitment","nameLocations":["8675:4:120","8680:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69292,"src":"8675:20:120"},"referencedDeclaration":69292,"src":"8675:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"id":68642,"nodeType":"ArrayTypeName","src":"8675:22:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69292_storage_$dyn_storage_ptr","typeString":"struct Gear.BlockCommitment[]"}},"visibility":"internal"},{"constant":false,"id":68646,"mutability":"mutable","name":"_signatures","nameLocation":"8743:11:120","nodeType":"VariableDeclaration","scope":68719,"src":"8726:28:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":68644,"name":"bytes","nodeType":"ElementaryTypeName","src":"8726:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":68645,"nodeType":"ArrayTypeName","src":"8726:7:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"8674:81:120"},"returnParameters":{"id":68650,"nodeType":"ParameterList","parameters":[],"src":"8798:0:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68800,"nodeType":"FunctionDefinition","src":"9493:887:120","nodes":[],"body":{"id":68799,"nodeType":"Block","src":"9575:805:120","nodes":[],"statements":[{"assignments":[68730],"declarations":[{"constant":false,"id":68730,"mutability":"mutable","name":"router","nameLocation":"9601:6:120","nodeType":"VariableDeclaration","scope":68799,"src":"9585:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68729,"nodeType":"UserDefinedTypeName","pathNode":{"id":68728,"name":"Storage","nameLocations":["9585:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"9585:7:120"},"referencedDeclaration":65250,"src":"9585:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68733,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68731,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69084,"src":"9610:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65250_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9610:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9585:34:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68735,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68730,"src":"9637:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68736,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9644:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65229,"src":"9637:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69318_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68737,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9657:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69313,"src":"9637:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9673:1:120","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":68739,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9665:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68738,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9665:7:120","typeDescriptions":{}}},"id":68741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9665:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9637:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":68743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9677:58:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":68734,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9629:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9629:107:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68745,"nodeType":"ExpressionStatement","src":"9629:107:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"},"id":68755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":68747,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68730,"src":"9768:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68748,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9775:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"9768:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68749,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9788:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69335,"src":"9768:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69301_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68751,"indexExpression":{"id":68750,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68721,"src":"9794:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9768:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":68752,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"9806:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":68753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9811:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69301,"src":"9806:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69301_$","typeString":"type(enum Gear.CodeState)"}},"id":68754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9821:9:120","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":69300,"src":"9806:24:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69301","typeString":"enum Gear.CodeState"}},"src":"9768:62:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652076616c696461746564206265666f72652070726f6772616d206372656174696f6e","id":68756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9844:48:120","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":68746,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9747:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9747:155:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68758,"nodeType":"ExpressionStatement","src":"9747:155:120"},{"assignments":[68760],"declarations":[{"constant":false,"id":68760,"mutability":"mutable","name":"actorId","nameLocation":"10071:7:120","nodeType":"VariableDeclaration","scope":68799,"src":"10063:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68759,"name":"address","nodeType":"ElementaryTypeName","src":"10063:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68774,"initialValue":{"arguments":[{"expression":{"expression":{"id":68763,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68730,"src":"10119:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68764,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10126:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65237,"src":"10119:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69279_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68765,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10140:11:120","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":69276,"src":"10119:32:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":68769,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68721,"src":"10180:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68770,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68723,"src":"10189:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68767,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10163:3:120","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":68768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10167:12:120","memberName":"encodePacked","nodeType":"MemberAccess","src":"10163:16:120","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":68771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10163:32:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68766,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10153:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":68772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10153:43:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68761,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"10093:6:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$42512_$","typeString":"type(library Clones)"}},"id":68762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10100:18:120","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":42430,"src":"10093:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":68773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10093:104:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10063:134:120"},{"expression":{"id":68783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":68775,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68730,"src":"10208:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68779,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10215:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"10208:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68780,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10228:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69339,"src":"10208:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":68781,"indexExpression":{"id":68778,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68760,"src":"10237:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10208:37:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":68782,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68721,"src":"10248:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10208:47:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68784,"nodeType":"ExpressionStatement","src":"10208:47:120"},{"expression":{"id":68790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10265:35:120","subExpression":{"expression":{"expression":{"id":68785,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68730,"src":"10265:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68788,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10272:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"10265:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68789,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10285:13:120","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":69341,"src":"10265:33:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68791,"nodeType":"ExpressionStatement","src":"10265:35:120"},{"eventCall":{"arguments":[{"id":68793,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68760,"src":"10331:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":68794,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68721,"src":"10340:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68792,"name":"ProgramCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65283,"src":"10316:14:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":68795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10316:32:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68796,"nodeType":"EmitStatement","src":"10311:37:120"},{"expression":{"id":68797,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68760,"src":"10366:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68727,"id":68798,"nodeType":"Return","src":"10359:14:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createProgram","nameLocation":"9502:14:120","parameters":{"id":68724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68721,"mutability":"mutable","name":"_codeId","nameLocation":"9525:7:120","nodeType":"VariableDeclaration","scope":68800,"src":"9517:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68720,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9517:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68723,"mutability":"mutable","name":"_salt","nameLocation":"9542:5:120","nodeType":"VariableDeclaration","scope":68800,"src":"9534:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68722,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9534:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9516:32:120"},"returnParameters":{"id":68727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68726,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68800,"src":"9566:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68725,"name":"address","nodeType":"ElementaryTypeName","src":"9566:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9565:9:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":68826,"nodeType":"FunctionDefinition","src":"10386:246:120","nodes":[],"body":{"id":68825,"nodeType":"Block","src":"10476:156:120","nodes":[],"statements":[{"assignments":[68810],"declarations":[{"constant":false,"id":68810,"mutability":"mutable","name":"decoder","nameLocation":"10494:7:120","nodeType":"VariableDeclaration","scope":68825,"src":"10486:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68809,"name":"address","nodeType":"ElementaryTypeName","src":"10486:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68816,"initialValue":{"arguments":[{"id":68813,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68802,"src":"10530:15:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":68814,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68804,"src":"10547:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68811,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"10504:6:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$42512_$","typeString":"type(library Clones)"}},"id":68812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10511:18:120","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":42430,"src":"10504:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":68815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10504:49:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10486:67:120"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":68818,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68810,"src":"10579:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":68817,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65211,"src":"10564:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$65211_$","typeString":"type(contract IMirrorDecoder)"}},"id":68819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10564:23:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorDecoder_$65211","typeString":"contract IMirrorDecoder"}},"id":68820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10588:10:120","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":65181,"src":"10564:34:120","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":68821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10564:36:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68822,"nodeType":"ExpressionStatement","src":"10564:36:120"},{"expression":{"id":68823,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68810,"src":"10618:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68808,"id":68824,"nodeType":"Return","src":"10611:14:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createDecoder","nameLocation":"10395:14:120","parameters":{"id":68805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68802,"mutability":"mutable","name":"_implementation","nameLocation":"10418:15:120","nodeType":"VariableDeclaration","scope":68826,"src":"10410:23:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68801,"name":"address","nodeType":"ElementaryTypeName","src":"10410:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":68804,"mutability":"mutable","name":"_salt","nameLocation":"10443:5:120","nodeType":"VariableDeclaration","scope":68826,"src":"10435:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68803,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10435:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10409:40:120"},"returnParameters":{"id":68808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68807,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68826,"src":"10467:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68806,"name":"address","nodeType":"ElementaryTypeName","src":"10467:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10466:9:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":68895,"nodeType":"FunctionDefinition","src":"10638:1094:120","nodes":[],"body":{"id":68894,"nodeType":"Block","src":"10778:954:120","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68838,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68829,"src":"10809:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68839,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10816:20:120","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"10809:27:120","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69306_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":68840,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10837:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69303,"src":"10809:32:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":68841,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68832,"src":"10845:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":68842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10862:22:120","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":69285,"src":"10845:39:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10809:75:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b2068617368","id":68844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10898:39:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_4a13fb2485de3ac50aa69e9cf88b3994102e3ec72af73005448c8624cb4f1ed7","typeString":"literal_string \"invalid previous committed block hash\""},"value":"invalid previous committed block hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4a13fb2485de3ac50aa69e9cf88b3994102e3ec72af73005448c8624cb4f1ed7","typeString":"literal_string \"invalid previous committed block hash\""}],"id":68837,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10788:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10788:159:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68846,"nodeType":"ExpressionStatement","src":"10788:159:120"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":68850,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68832,"src":"10990:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":68851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11007:16:120","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":69287,"src":"10990:33:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68848,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"10966:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":68849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10971:18:120","memberName":"blockIsPredecessor","nodeType":"MemberAccess","referencedDeclaration":69455,"src":"10966:23:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":68852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10966:58:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616c6c6f776564207072656465636573736f7220626c6f636b207761736e277420666f756e64","id":68853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11026:40:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_b3ebb0be53d5bf46a2d46be11aa5ba444a61071a9171c96feb964b4bc5f6539a","typeString":"literal_string \"allowed predecessor block wasn't found\""},"value":"allowed predecessor block wasn't found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3ebb0be53d5bf46a2d46be11aa5ba444a61071a9171c96feb964b4bc5f6539a","typeString":"literal_string \"allowed predecessor block wasn't found\""}],"id":68847,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10958:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10958:109:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68855,"nodeType":"ExpressionStatement","src":"10958:109:120"},{"expression":{"id":68866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68856,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68829,"src":"11207:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68858,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11214:20:120","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"11207:27:120","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69306_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":68861,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68832,"src":"11261:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":68862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11278:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69281,"src":"11261:21:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":68863,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68832,"src":"11284:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":68864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11301:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69283,"src":"11284:26:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":68859,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"11237:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":68860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11242:18:120","memberName":"CommittedBlockInfo","nodeType":"MemberAccess","referencedDeclaration":69306,"src":"11237:23:120","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CommittedBlockInfo_$69306_storage_ptr_$","typeString":"type(struct Gear.CommittedBlockInfo storage pointer)"}},"id":68865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11237:74:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69306_memory_ptr","typeString":"struct Gear.CommittedBlockInfo memory"}},"src":"11207:104:120","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69306_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":68867,"nodeType":"ExpressionStatement","src":"11207:104:120"},{"assignments":[68869],"declarations":[{"constant":false,"id":68869,"mutability":"mutable","name":"transitionsHashesHash","nameLocation":"11330:21:120","nodeType":"VariableDeclaration","scope":68894,"src":"11322:29:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68868,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11322:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":68875,"initialValue":{"arguments":[{"id":68871,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68829,"src":"11373:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":68872,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68832,"src":"11381:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":68873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11398:11:120","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":69291,"src":"11381:28:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69367_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69367_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}],"id":68870,"name":"_commitTransitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68980,"src":"11354:18:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$65250_storage_ptr_$_t_array$_t_struct$_StateTransition_$69367_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.StateTransition calldata[] calldata) returns (bytes32)"}},"id":68874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11354:56:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11322:88:120"},{"eventCall":{"arguments":[{"expression":{"id":68877,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68832,"src":"11441:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":68878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11458:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69281,"src":"11441:21:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68876,"name":"BlockCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65255,"src":"11426:14:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":68879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11426:37:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68880,"nodeType":"EmitStatement","src":"11421:42:120"},{"expression":{"arguments":[{"expression":{"id":68883,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68832,"src":"11519:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":68884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11536:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69281,"src":"11519:21:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":68885,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68832,"src":"11554:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":68886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11571:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69283,"src":"11554:26:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"expression":{"id":68887,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68832,"src":"11594:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":68888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11611:22:120","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":69285,"src":"11594:39:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":68889,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68832,"src":"11647:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":68890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11664:16:120","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":69287,"src":"11647:33:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68891,"name":"transitionsHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68869,"src":"11694:21:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68881,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69716,"src":"11481:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$69716_$","typeString":"type(library Gear)"}},"id":68882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11486:19:120","memberName":"blockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":69411,"src":"11481:24:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint48_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,uint48,bytes32,bytes32,bytes32) pure returns (bytes32)"}},"id":68892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11481:244:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":68836,"id":68893,"nodeType":"Return","src":"11474:251:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitBlock","nameLocation":"10647:12:120","parameters":{"id":68833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68829,"mutability":"mutable","name":"router","nameLocation":"10676:6:120","nodeType":"VariableDeclaration","scope":68895,"src":"10660:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68828,"nodeType":"UserDefinedTypeName","pathNode":{"id":68827,"name":"Storage","nameLocations":["10660:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"10660:7:120"},"referencedDeclaration":65250,"src":"10660:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":68832,"mutability":"mutable","name":"_blockCommitment","nameLocation":"10714:16:120","nodeType":"VariableDeclaration","scope":68895,"src":"10684:46:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":68831,"nodeType":"UserDefinedTypeName","pathNode":{"id":68830,"name":"Gear.BlockCommitment","nameLocations":["10684:4:120","10689:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69292,"src":"10684:20:120"},"referencedDeclaration":69292,"src":"10684:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69292_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"src":"10659:72:120"},"returnParameters":{"id":68836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68835,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68895,"src":"10765:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68834,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10765:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10764:9:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":68980,"nodeType":"FunctionDefinition","src":"11738:839:120","nodes":[],"body":{"id":68979,"nodeType":"Block","src":"11882:695:120","nodes":[],"statements":[{"assignments":[68908],"declarations":[{"constant":false,"id":68908,"mutability":"mutable","name":"transitionsHashes","nameLocation":"11905:17:120","nodeType":"VariableDeclaration","scope":68979,"src":"11892:30:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":68907,"name":"bytes","nodeType":"ElementaryTypeName","src":"11892:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":68909,"nodeType":"VariableDeclarationStatement","src":"11892:30:120"},{"body":{"id":68973,"nodeType":"Block","src":"11983:542:120","statements":[{"assignments":[68925],"declarations":[{"constant":false,"id":68925,"mutability":"mutable","name":"transition","nameLocation":"12027:10:120","nodeType":"VariableDeclaration","scope":68973,"src":"11997:40:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":68924,"nodeType":"UserDefinedTypeName","pathNode":{"id":68923,"name":"Gear.StateTransition","nameLocations":["11997:4:120","12002:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69367,"src":"11997:20:120"},"referencedDeclaration":69367,"src":"11997:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"id":68929,"initialValue":{"baseExpression":{"id":68926,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68902,"src":"12040:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69367_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":68928,"indexExpression":{"id":68927,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68911,"src":"12053:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12040:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"nodeType":"VariableDeclarationStatement","src":"11997:58:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":68931,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68898,"src":"12095:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68932,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12102:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"12095:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69344_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68933,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12115:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69339,"src":"12095:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":68936,"indexExpression":{"expression":{"id":68934,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68925,"src":"12124:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":68935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12135:7:120","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69351,"src":"12124:18:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12095:48:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":68937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12147:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12095:53:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f756c646e277420706572666f726d207472616e736974696f6e20666f7220756e6b6e6f776e2070726f6772616d","id":68939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12150:49:120","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":68930,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12070:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12070:143:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68941,"nodeType":"ExpressionStatement","src":"12070:143:120"},{"expression":{"arguments":[{"expression":{"id":68948,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68925,"src":"12284:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":68949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12295:7:120","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69351,"src":"12284:18:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":68950,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68925,"src":"12304:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":68951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12315:14:120","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":69358,"src":"12304:25:120","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"expression":{"expression":{"id":68943,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68898,"src":"12241:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68944,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12248:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65237,"src":"12241:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69279_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68945,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12262:11:120","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":69278,"src":"12241:32:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":68942,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65472,"src":"12228:12:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$65472_$","typeString":"type(contract IWrappedVara)"}},"id":68946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12228:46:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65472","typeString":"contract IWrappedVara"}},"id":68947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12275:8:120","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":43780,"src":"12228:55:120","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":68952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12228:102:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68953,"nodeType":"ExpressionStatement","src":"12228:102:120"},{"assignments":[68955],"declarations":[{"constant":false,"id":68955,"mutability":"mutable","name":"transitionHash","nameLocation":"12353:14:120","nodeType":"VariableDeclaration","scope":68973,"src":"12345:22:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68954,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12345:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":68963,"initialValue":{"arguments":[{"id":68961,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68925,"src":"12421:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}],"expression":{"arguments":[{"expression":{"id":68957,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68925,"src":"12378:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":68958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12389:7:120","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69351,"src":"12378:18:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":68956,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65176,"src":"12370:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$65176_$","typeString":"type(contract IMirror)"}},"id":68959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12370:27:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$65176","typeString":"contract IMirror"}},"id":68960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12398:22:120","memberName":"performStateTransition","nodeType":"MemberAccess","referencedDeclaration":65175,"src":"12370:50:120","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_StateTransition_$69367_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.StateTransition memory) external returns (bytes32)"}},"id":68962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12370:62:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"12345:87:120"},{"expression":{"id":68971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":68964,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68908,"src":"12447:17:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":68968,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68908,"src":"12480:17:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":68969,"name":"transitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68955,"src":"12499:14:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68966,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12467:5:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":68965,"name":"bytes","nodeType":"ElementaryTypeName","src":"12467:5:120","typeDescriptions":{}}},"id":68967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12473:6:120","memberName":"concat","nodeType":"MemberAccess","src":"12467:12:120","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":68970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12467:47:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"12447:67:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":68972,"nodeType":"ExpressionStatement","src":"12447:67:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68914,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68911,"src":"11953:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68915,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68902,"src":"11957:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69367_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":68916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11970:6:120","memberName":"length","nodeType":"MemberAccess","src":"11957:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11953:23:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68974,"initializationExpression":{"assignments":[68911],"declarations":[{"constant":false,"id":68911,"mutability":"mutable","name":"i","nameLocation":"11946:1:120","nodeType":"VariableDeclaration","scope":68974,"src":"11938:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68910,"name":"uint256","nodeType":"ElementaryTypeName","src":"11938:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68913,"initialValue":{"hexValue":"30","id":68912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11950:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11938:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11978:3:120","subExpression":{"id":68918,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68911,"src":"11978:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68920,"nodeType":"ExpressionStatement","src":"11978:3:120"},"nodeType":"ForStatement","src":"11933:592:120"},{"expression":{"arguments":[{"id":68976,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68908,"src":"12552:17:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68975,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"12542:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":68977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12542:28:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":68906,"id":68978,"nodeType":"Return","src":"12535:35:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitTransitions","nameLocation":"11747:18:120","parameters":{"id":68903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68898,"mutability":"mutable","name":"router","nameLocation":"11782:6:120","nodeType":"VariableDeclaration","scope":68980,"src":"11766:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68897,"nodeType":"UserDefinedTypeName","pathNode":{"id":68896,"name":"Storage","nameLocations":["11766:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"11766:7:120"},"referencedDeclaration":65250,"src":"11766:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":68902,"mutability":"mutable","name":"_transitions","nameLocation":"11822:12:120","nodeType":"VariableDeclaration","scope":68980,"src":"11790:44:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69367_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition[]"},"typeName":{"baseType":{"id":68900,"nodeType":"UserDefinedTypeName","pathNode":{"id":68899,"name":"Gear.StateTransition","nameLocations":["11790:4:120","11795:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69367,"src":"11790:20:120"},"referencedDeclaration":69367,"src":"11790:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69367_storage_ptr","typeString":"struct Gear.StateTransition"}},"id":68901,"nodeType":"ArrayTypeName","src":"11790:22:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69367_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"}},"visibility":"internal"}],"src":"11765:70:120"},"returnParameters":{"id":68906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68905,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68980,"src":"11869:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68904,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11869:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11868:9:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69033,"nodeType":"FunctionDefinition","src":"12583:406:120","nodes":[],"body":{"id":69032,"nodeType":"Block","src":"12669:320:120","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"expression":{"id":68990,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68983,"src":"12687:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68991,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12694:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"12687:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68992,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12713:10:120","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":69372,"src":"12687:36:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":68993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12724:6:120","memberName":"length","nodeType":"MemberAccess","src":"12687:43:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":68994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12734:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12687:48:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"72656d6f76652070726576696f75732076616c696461746f7273206669727374","id":68996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12737:34:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f6a03e209138d575bb162b4e280f18514af00259c854f4d737ad74345b1a440","typeString":"literal_string \"remove previous validators first\""},"value":"remove previous validators first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f6a03e209138d575bb162b4e280f18514af00259c854f4d737ad74345b1a440","typeString":"literal_string \"remove previous validators first\""}],"id":68989,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12679:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12679:93:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68998,"nodeType":"ExpressionStatement","src":"12679:93:120"},{"body":{"id":69022,"nodeType":"Block","src":"12832:90:120","statements":[{"expression":{"id":69020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":69010,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68983,"src":"12846:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69016,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12853:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"12846:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":69017,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12872:16:120","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":69376,"src":"12846:42:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":69018,"indexExpression":{"baseExpression":{"id":69013,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68986,"src":"12889:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":69015,"indexExpression":{"id":69014,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69000,"src":"12901:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12889:14:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12846:58:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":69019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12907:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"12846:65:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69021,"nodeType":"ExpressionStatement","src":"12846:65:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69003,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69000,"src":"12803:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":69004,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68986,"src":"12807:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":69005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12819:6:120","memberName":"length","nodeType":"MemberAccess","src":"12807:18:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12803:22:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69023,"initializationExpression":{"assignments":[69000],"declarations":[{"constant":false,"id":69000,"mutability":"mutable","name":"i","nameLocation":"12796:1:120","nodeType":"VariableDeclaration","scope":69023,"src":"12788:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68999,"name":"uint256","nodeType":"ElementaryTypeName","src":"12788:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69002,"initialValue":{"hexValue":"30","id":69001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12800:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12788:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":69008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12827:3:120","subExpression":{"id":69007,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69000,"src":"12827:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69009,"nodeType":"ExpressionStatement","src":"12827:3:120"},"nodeType":"ForStatement","src":"12783:139:120"},{"expression":{"id":69030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":69024,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68983,"src":"12932:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69027,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12939:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"12932:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":69028,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12958:10:120","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":69372,"src":"12932:36:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69029,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68986,"src":"12971:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"12932:50:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":69031,"nodeType":"ExpressionStatement","src":"12932:50:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setValidators","nameLocation":"12592:14:120","parameters":{"id":68987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68983,"mutability":"mutable","name":"router","nameLocation":"12623:6:120","nodeType":"VariableDeclaration","scope":69033,"src":"12607:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68982,"nodeType":"UserDefinedTypeName","pathNode":{"id":68981,"name":"Storage","nameLocations":["12607:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"12607:7:120"},"referencedDeclaration":65250,"src":"12607:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":68986,"mutability":"mutable","name":"_validators","nameLocation":"12648:11:120","nodeType":"VariableDeclaration","scope":69033,"src":"12631:28:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68984,"name":"address","nodeType":"ElementaryTypeName","src":"12631:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68985,"nodeType":"ArrayTypeName","src":"12631:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"12606:54:120"},"returnParameters":{"id":68988,"nodeType":"ParameterList","parameters":[],"src":"12669:0:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69071,"nodeType":"FunctionDefinition","src":"12995:318:120","nodes":[],"body":{"id":69070,"nodeType":"Block","src":"13054:259:120","nodes":[],"statements":[{"body":{"id":69063,"nodeType":"Block","src":"13138:115:120","statements":[{"expression":{"id":69061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13152:90:120","subExpression":{"baseExpression":{"expression":{"expression":{"id":69052,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69036,"src":"13159:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69053,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13166:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"13159:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":69054,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13185:16:120","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":69376,"src":"13159:42:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":69060,"indexExpression":{"baseExpression":{"expression":{"expression":{"id":69055,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69036,"src":"13202:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69056,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13209:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"13202:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":69057,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13228:10:120","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":69372,"src":"13202:36:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":69059,"indexExpression":{"id":69058,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69040,"src":"13239:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13202:39:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13159:83:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69062,"nodeType":"ExpressionStatement","src":"13152:90:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69043,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69040,"src":"13084:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"expression":{"id":69044,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69036,"src":"13088:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69045,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13095:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"13088:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":69046,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13114:10:120","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":69372,"src":"13088:36:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":69047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13125:6:120","memberName":"length","nodeType":"MemberAccess","src":"13088:43:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13084:47:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69064,"initializationExpression":{"assignments":[69040],"declarations":[{"constant":false,"id":69040,"mutability":"mutable","name":"i","nameLocation":"13077:1:120","nodeType":"VariableDeclaration","scope":69064,"src":"13069:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69039,"name":"uint256","nodeType":"ElementaryTypeName","src":"13069:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69042,"initialValue":{"hexValue":"30","id":69041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13081:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13069:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":69050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13133:3:120","subExpression":{"id":69049,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69040,"src":"13133:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69051,"nodeType":"ExpressionStatement","src":"13133:3:120"},"nodeType":"ForStatement","src":"13064:189:120"},{"expression":{"id":69068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13263:43:120","subExpression":{"expression":{"expression":{"id":69065,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69036,"src":"13270:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13277:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"13270:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69377_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":69067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13296:10:120","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":69372,"src":"13270:36:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69069,"nodeType":"ExpressionStatement","src":"13263:43:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_removeValidators","nameLocation":"13004:17:120","parameters":{"id":69037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69036,"mutability":"mutable","name":"router","nameLocation":"13038:6:120","nodeType":"VariableDeclaration","scope":69071,"src":"13022:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69035,"nodeType":"UserDefinedTypeName","pathNode":{"id":69034,"name":"Storage","nameLocations":["13022:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"13022:7:120"},"referencedDeclaration":65250,"src":"13022:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"13021:24:120"},"returnParameters":{"id":69038,"nodeType":"ParameterList","parameters":[],"src":"13054:0:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69084,"nodeType":"FunctionDefinition","src":"13319:192:120","nodes":[],"body":{"id":69083,"nodeType":"Block","src":"13384:127:120","nodes":[],"statements":[{"assignments":[69078],"declarations":[{"constant":false,"id":69078,"mutability":"mutable","name":"slot","nameLocation":"13402:4:120","nodeType":"VariableDeclaration","scope":69083,"src":"13394:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69077,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13394:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69081,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":69079,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69096,"src":"13409:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":69080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13409:17:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13394:32:120"},{"AST":{"nativeSrc":"13462:43:120","nodeType":"YulBlock","src":"13462:43:120","statements":[{"nativeSrc":"13476:19:120","nodeType":"YulAssignment","src":"13476:19:120","value":{"name":"slot","nativeSrc":"13491:4:120","nodeType":"YulIdentifier","src":"13491:4:120"},"variableNames":[{"name":"router.slot","nativeSrc":"13476:11:120","nodeType":"YulIdentifier","src":"13476:11:120"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":69075,"isOffset":false,"isSlot":true,"src":"13476:11:120","suffix":"slot","valueSize":1},{"declaration":69078,"isOffset":false,"isSlot":false,"src":"13491:4:120","valueSize":1}],"flags":["memory-safe"],"id":69082,"nodeType":"InlineAssembly","src":"13437:68:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_router","nameLocation":"13328:7:120","parameters":{"id":69072,"nodeType":"ParameterList","parameters":[],"src":"13335:2:120"},"returnParameters":{"id":69076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69075,"mutability":"mutable","name":"router","nameLocation":"13376:6:120","nodeType":"VariableDeclaration","scope":69084,"src":"13360:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69074,"nodeType":"UserDefinedTypeName","pathNode":{"id":69073,"name":"Storage","nameLocations":["13360:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65250,"src":"13360:7:120"},"referencedDeclaration":65250,"src":"13360:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65250_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"13359:24:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":69096,"nodeType":"FunctionDefinition","src":"13517:128:120","nodes":[],"body":{"id":69095,"nodeType":"Block","src":"13575:70:120","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":69091,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67816,"src":"13619:12:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69089,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44431,"src":"13592:11:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44431_$","typeString":"type(library StorageSlot)"}},"id":69090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13604:14:120","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":44364,"src":"13592:26:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$44319_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":69092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13592:40:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$44319_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":69093,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13633:5:120","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":44318,"src":"13592:46:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":69088,"id":69094,"nodeType":"Return","src":"13585:53:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nameLocation":"13526:15:120","parameters":{"id":69085,"nodeType":"ParameterList","parameters":[],"src":"13541:2:120"},"returnParameters":{"id":69088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69096,"src":"13566:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69086,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13566:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13565:9:120"},"scope":69142,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":69141,"nodeType":"FunctionDefinition","src":"13651:252:120","nodes":[],"body":{"id":69140,"nodeType":"Block","src":"13719:184:120","nodes":[],"statements":[{"assignments":[69104],"declarations":[{"constant":false,"id":69104,"mutability":"mutable","name":"slot","nameLocation":"13737:4:120","nodeType":"VariableDeclaration","scope":69140,"src":"13729:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69103,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13729:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69130,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":69113,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69098,"src":"13789:9:120","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":69112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13783:5:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":69111,"name":"bytes","nodeType":"ElementaryTypeName","src":"13783:5:120","typeDescriptions":{}}},"id":69114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13783:16:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69110,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13773:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13773:27:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":69109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13765:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":69108,"name":"uint256","nodeType":"ElementaryTypeName","src":"13765:7:120","typeDescriptions":{}}},"id":69116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13765:36:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":69117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13804:1:120","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13765:40:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":69106,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13754:3:120","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":69107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13758:6:120","memberName":"encode","nodeType":"MemberAccess","src":"13754:10:120","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":69119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13754:52:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69105,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13744:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13744:63:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":69128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"13810:23:120","subExpression":{"arguments":[{"arguments":[{"hexValue":"30786666","id":69125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13827:4:120","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":69124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13819:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":69123,"name":"uint256","nodeType":"ElementaryTypeName","src":"13819:7:120","typeDescriptions":{}}},"id":69126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13819:13:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":69122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13811:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":69121,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13811:7:120","typeDescriptions":{}}},"id":69127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13811:22:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13744:89:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13729:104:120"},{"expression":{"id":69138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":69134,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67816,"src":"13870:12:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69131,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44431,"src":"13843:11:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44431_$","typeString":"type(library StorageSlot)"}},"id":69133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13855:14:120","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":44364,"src":"13843:26:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$44319_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":69135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13843:40:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$44319_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":69136,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13884:5:120","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":44318,"src":"13843:46:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69137,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69104,"src":"13892:4:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13843:53:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":69139,"nodeType":"ExpressionStatement","src":"13843:53:120"}]},"implemented":true,"kind":"function","modifiers":[{"id":69101,"kind":"modifierInvocation","modifierName":{"id":69100,"name":"onlyOwner","nameLocations":["13709:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"13709:9:120"},"nodeType":"ModifierInvocation","src":"13709:9:120"}],"name":"_setStorageSlot","nameLocation":"13660:15:120","parameters":{"id":69099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69098,"mutability":"mutable","name":"namespace","nameLocation":"13690:9:120","nodeType":"VariableDeclaration","scope":69141,"src":"13676:23:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":69097,"name":"string","nodeType":"ElementaryTypeName","src":"13676:6:120","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13675:25:120"},"returnParameters":{"id":69102,"nodeType":"ParameterList","parameters":[],"src":"13719:0:120"},"scope":69142,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":67808,"name":"IRouter","nameLocations":["651:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65461,"src":"651:7:120"},"id":67809,"nodeType":"InheritanceSpecifier","src":"651:7:120"},{"baseName":{"id":67810,"name":"OwnableUpgradeable","nameLocations":["660:18:120"],"nodeType":"IdentifierPath","referencedDeclaration":40332,"src":"660:18:120"},"id":67811,"nodeType":"InheritanceSpecifier","src":"660:18:120"},{"baseName":{"id":67812,"name":"ReentrancyGuardTransient","nameLocations":["680:24:120"],"nodeType":"IdentifierPath","referencedDeclaration":44307,"src":"680:24:120"},"id":67813,"nodeType":"InheritanceSpecifier","src":"680:24:120"}],"canonicalName":"Router","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[69142,44307,40332,41480,40586,65461],"name":"Router","nameLocation":"641:6:120","scope":69143,"usedErrors":[40168,40173,40349,40352,44174,44180,44251,44961,44966,44971],"usedEvents":[40179,40357,65255,65262,65269,65276,65283,65286,65289]}],"license":"UNLICENSED"},"id":120} \ No newline at end of file diff --git a/ethexe/ethereum/TransparentUpgradeableProxy.json b/ethexe/ethereum/TransparentUpgradeableProxy.json index 18e9f382330..b9e25097781 100644 --- a/ethexe/ethereum/TransparentUpgradeableProxy.json +++ b/ethexe/ethereum/TransparentUpgradeableProxy.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_logic","type":"address","internalType":"address"},{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_data","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidAdmin","inputs":[{"name":"admin","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"ProxyDeniedAdminAccess","inputs":[]}],"bytecode":{"object":"0x60a0604052610a97803803806100148161026b565b92833981016060828203126102675761002c82610290565b61003860208401610290565b604084015190936001600160401b03821161026757019180601f8401121561026757825161006d610068826102a4565b61026b565b9381855260208501926020838301011161026757815f926020809301855e85010152813b15610246577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561022e575f809161012d945190845af43d15610226573d9161011e610068846102a4565b9283523d5f602085013e6102bf565b505b604051906104408083016001600160401b0381118482101761021257602092849261063784396001600160a01b031681520301905ff080156102075760018060a01b0316806080525f516020610a775f395f51905f52547f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6040805160018060a01b0384168152846020820152a181156101f4576001600160a01b031916175f516020610a775f395f51905f5255604051610319908161031e82396080518160070152f35b633173bdd160e11b5f525f60045260245ffd5b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6060916102bf565b505050341561012f5763b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761021257604052565b51906001600160a01b038216820361026757565b6001600160401b03811161021257601f01601f191660200190565b906102e357508051156102d457805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610314575b6102f4575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102ec56fe6080604052337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610066575f356001600160e01b03191663278f794360e11b1461005c576334ad5dbb60e21b5f5260045ffd5b61006461010a565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156100ab573d5ff35b3d5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100e957604052565b6100af565b67ffffffffffffffff81116100e957601f01601f191660200190565b36600411610193576040366003190112610193576004356001600160a01b03811690819003610193576024359067ffffffffffffffff8211610193573660238301121561019357816004013590610168610163836100ee565b6100c3565b918083523660248286010111610193576020815f92602461019197018387013784010152610197565b565b5f80fd5b90813b1561022b577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610213576102109161024c565b50565b50503461021c57565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f8061027e93602081519101845af43d15610281573d9161026f610163846100ee565b9283523d5f602085013e610285565b90565b6060915b906102a9575080511561029a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806102da575b6102ba575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102b256fea2646970667358221220289d5e3a24234628147ec5089482f4d8b968bb26af0696e6494e3dbfd07c072f64736f6c634300081c003360803460b857601f61044038819003918201601f19168301916001600160401b0383118484101760bc5780849260209460405283398101031260b857516001600160a01b0381169081900360b857801560a5575f80546001600160a01b031981168317825560405192916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361036f90816100d18239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f5f3560e01c8063715018a6146102765780638da5cb5b1461024f5780639623609d1461012c578063ad3cb1cc146100df5763f2fde38b14610051575f80fd5b346100dc5760203660031901126100dc576004356001600160a01b038116908190036100da5761007f610313565b80156100c65781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346100dc57806003193601126100dc57506101286040516101026040826102cd565b60058152640352e302e360dc1b60208201526040519182916020835260208301906102ef565b0390f35b506060366003190112610237576004356001600160a01b03811690819003610237576024356001600160a01b038116908190036102375760443567ffffffffffffffff8111610237573660238201121561023757806004013567ffffffffffffffff811161023b57604051916101ac601f8301601f1916602001846102cd565b818352366024838301011161023757815f9260246020930183860137830101526101d4610313565b823b156102375761020a925f9260405180958194829363278f794360e11b845260048401526040602484015260448301906102ef565b039134905af1801561022c5761021e575080f35b61022a91505f906102cd565b005b6040513d5f823e3d90fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b34610237575f366003190112610237575f546040516001600160a01b039091168152602090f35b34610237575f3660031901126102375761028e610313565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b90601f8019910116810190811067ffffffffffffffff82111761023b57604052565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b5f546001600160a01b0316330361032657565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212203d90ecd6ab8fd2607bedb16db56f705d3963a161f03045ade1485738fbd88b2064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103","sourceMap":"4239:2231:52:-:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4239:2231:52;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;4239:2231:52;;;;;;;;;;;1758:29:46;;:34;1754:119;;821:66;4239:2231:52;;-1:-1:-1;;;;;;4239:2231:52;-1:-1:-1;;;;;4239:2231:52;;;;;;;;2417:36:46;-1:-1:-1;;2417:36:46;4239:2231:52;;2468:15:46;:11;;-1:-1:-1;4049:25:58;;4091:55;4049:25;;;;;;4239:2231:52;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;4239:2231:52;;;;4091:55:58;:::i;:::-;;2464:148:46;4239:2231:52;;;5215:28;;;;-1:-1:-1;;;;;5215:28:52;;;;;;;;4239:2231;5215:28;;;;;;-1:-1:-1;;;;;4239:2231:52;;;5215:28;;;-1:-1:-1;5215:28:52;;;;;4239:2231;;;;;;5198:46;;;-1:-1:-1;;;;;;;;;;;2878:66:46;3900:43;4239:2231:52;;;;;;;;;;;;;;;;;3900:43:46;3559:22;;3555:91;;-1:-1:-1;;;;;;4239:2231:52;;-1:-1:-1;;;;;;;;;;;4239:2231:52;;;;;;;;;5198:46;4239:2231;;;;;;3555:91:46;3604:31;;;-1:-1:-1;3604:31:46;-1:-1:-1;3604:31:46;4239:2231:52;;-1:-1:-1;3604:31:46;5215:28:52;4239:2231;;;-1:-1:-1;4239:2231:52;;;;;5215:28;4239:2231;;;-1:-1:-1;4239:2231:52;;;;;-1:-1:-1;4239:2231:52;;;;4091:55:58;:::i;2464:148:46:-;6173:9;;;;6169:70;2464:148;6169:70;6209:19;;;-1:-1:-1;6209:19:46;;-1:-1:-1;6209:19:46;1754:119;-1:-1:-1;;;;;1815:47:46;;;-1:-1:-1;;;;;4239:2231:52;;;;1815:47:46;4239:2231:52;;;1815:47:46;4239:2231:52;-1:-1:-1;4239:2231:52;;;;;;;;;-1:-1:-1;;4239:2231:52;;;-1:-1:-1;;;;;4239:2231:52;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;4239:2231:52;;;;;;:::o;:::-;-1:-1:-1;;;;;4239:2231:52;;;;;;-1:-1:-1;;4239:2231:52;;;;:::o;4421:582:58:-;;4593:8;;-1:-1:-1;4239:2231:52;;5674:21:58;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;4239:2231:52;;4841:22:58;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:58;4917:24;;;-1:-1:-1;;;;;4239:2231:52;;;;4917:24:58;4239:2231:52;;;4917:24:58;4841:49;4867:18;;;:23;4841:49;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610066575f356001600160e01b03191663278f794360e11b1461005c576334ad5dbb60e21b5f5260045ffd5b61006461010a565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156100ab573d5ff35b3d5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100e957604052565b6100af565b67ffffffffffffffff81116100e957601f01601f191660200190565b36600411610193576040366003190112610193576004356001600160a01b03811690819003610193576024359067ffffffffffffffff8211610193573660238301121561019357816004013590610168610163836100ee565b6100c3565b918083523660248286010111610193576020815f92602461019197018387013784010152610197565b565b5f80fd5b90813b1561022b577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610213576102109161024c565b50565b50503461021c57565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f8061027e93602081519101845af43d15610281573d9161026f610163846100ee565b9283523d5f602085013e610285565b90565b6060915b906102a9575080511561029a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806102da575b6102ba575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102b256fea2646970667358221220289d5e3a24234628147ec5089482f4d8b968bb26af0696e6494e3dbfd07c072f64736f6c634300081c0033","sourceMap":"4239:2231:52:-:0;;;5741:10;5525:6;-1:-1:-1;;;;;4239:2231:52;5741:27;4239:2231;;5788:7;;-1:-1:-1;;;;;;5788:7:52;-1:-1:-1;;;5788:65:52;5799:54;;5880:24;;;5788:7;5880:24;;5788:7;5880:24;5784:201;;;:::i;:::-;4239:2231;5737:306;821:66:46;;-1:-1:-1;;;;;;;;;4239:2231:52;1019:819:47;-1:-1:-1;;1019:819:47;;;;;;;-1:-1:-1;1019:819:47;;;;;;-1:-1:-1;1019:819:47;;;-1:-1:-1;1019:819:47;4239:2231:52;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4239:2231:52;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;-1:-1:-1;;4239:2231:52;;;;:::o;6251:217::-;6366:8;6375:1;4239:2231;;;;6366:8;-1:-1:-1;;4239:2231:52;;;;6375:1;4239:2231;-1:-1:-1;;;;;4239:2231:52;;;;;;;;;;;;;;;;6366:8;4239:2231;;;;;;;;6375:1;4239:2231;;;;;;;:::i;:::-;;:::i;:::-;;;;;6366:8;4239:2231;;;;;;;;;;6366:8;4239:2231;;6456:4;4239:2231;;;;;;;;;;6456:4;:::i;:::-;6251:217::o;4239:2231::-;6366:8;4239:2231;;2274:344:46;;1758:29;;:34;1754:119;;821:66;4239:2231:52;;-1:-1:-1;;;;;;4239:2231:52;-1:-1:-1;;;;;4239:2231:52;;;;;;;;2417:36:46;-1:-1:-1;;2417:36:46;4239:2231:52;;2468:15:46;:11;;2499:53;;;:::i;:::-;;2274:344::o;2464:148::-;6173:9;;;6169:70;;2274:344::o;6169:70::-;6209:19;;;1791:1;6209:19;;1791:1;6209:19;1754:119;-1:-1:-1;;;;1791:1:46;1815:47;;;-1:-1:-1;;;;;4239:2231:52;;;;1815:47:46;4239:2231:52;;;1815:47:46;3900:253:58;4049:25;3900:253;4091:55;3900:253;4049:25;;;;;;;;4239:2231:52;;;;;;;;;;:::i;:::-;;;;;4049:25:58;;4239:2231:52;;;4091:55:58;:::i;:::-;3900:253;:::o;4239:2231:52:-;;;4421:582:58;;4593:8;;-1:-1:-1;4239:2231:52;;5674:21:58;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;4239:2231:52;;4841:22:58;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:58;4917:24;;;-1:-1:-1;;;;;4239:2231:52;;;;4917:24:58;4239:2231:52;;;4917:24:58;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"42438":[{"start":7,"length":32}]}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProxyDeniedAdminAccess\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself. 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating the proxy admin cannot fallback to the target implementation. These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership. NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to fully implement transparency without decoding reverts caused by selector clashes between the proxy and the implementation. NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract. IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot is generally fine if the implementation is trusted. WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"ProxyDeniedAdminAccess()\":[{\"details\":\"The proxy caller is the current admin, and can't fallback to the proxy target.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":\"TransparentUpgradeableProxy\"},\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x31b7f755099238afdf101d132e356ca59a2f5aa3c9d6957bc320c3a89c6b29a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c1ef7fce6c908e6912cbea81d4655489fb29e328b03502b6dc680a4eda65ae5\",\"dweb:/ipfs/QmQMasWF2fg4DvwYuXto8qvkDYVsrTDmBCgjRPTvn6PgpD\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x5f3770f82f75d132e210b43c071d3feec1bef13c385d1d799763a366e8bda311\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a50b7702cbd525c4a0fd3c36d1e116432b5f645f84cb25e4473dc9c88a917c5\",\"dweb:/ipfs/QmaN5QKZwgypVK3zAwdgXfsygEeauRYa4sSe4x8yKXDRtV\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x3cfd70b5e57ac16134caf206c6a71ea5ff113bc2032cd6d845231793f5c62995\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://984097ae51f9be9b94d2a3f5be7f284bd525fd9f0a0ccdca34cfaa7f0e1625d1\",\"dweb:/ipfs/QmXSL4rFMM25pJzvuTzN1DX4ddAwTCnmxS2axDwaZyzNHL\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0x11e3f4156c76feda27ffa117c3f624972471124411067e8f02c9a6909f35d035\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://beb0d9fe2c5fae15f1ca8a22b2c8cfaaa75984f6c8a94534ba85f98366caa6a5\",\"dweb:/ipfs/QmQEFQtyLACb6j7XajAT7Z1KzANE6JzqDYMEQeG8yzrfqP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a\",\"dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xfd29ed7a01e9ef109cc31542ca0f51ba3e793740570b69172ec3d8bfbb1643b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99379e0649be8106d2708a2bde73b5cdaba4505f1001f1586b53788bf971d097\",\"dweb:/ipfs/QmV9cCnvFoVzV2cVDW4Zbs3JQ3ehxBcooQS52taVxR637S\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"type":"error","name":"ERC1967InvalidAdmin"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"ProxyDeniedAdminAccess"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."}},"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/","symbiotic-core/=lib/symbiotic-core/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0x31b7f755099238afdf101d132e356ca59a2f5aa3c9d6957bc320c3a89c6b29a8","urls":["bzz-raw://6c1ef7fce6c908e6912cbea81d4655489fb29e328b03502b6dc680a4eda65ae5","dweb:/ipfs/QmQMasWF2fg4DvwYuXto8qvkDYVsrTDmBCgjRPTvn6PgpD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x5f3770f82f75d132e210b43c071d3feec1bef13c385d1d799763a366e8bda311","urls":["bzz-raw://3a50b7702cbd525c4a0fd3c36d1e116432b5f645f84cb25e4473dc9c88a917c5","dweb:/ipfs/QmaN5QKZwgypVK3zAwdgXfsygEeauRYa4sSe4x8yKXDRtV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x3cfd70b5e57ac16134caf206c6a71ea5ff113bc2032cd6d845231793f5c62995","urls":["bzz-raw://984097ae51f9be9b94d2a3f5be7f284bd525fd9f0a0ccdca34cfaa7f0e1625d1","dweb:/ipfs/QmXSL4rFMM25pJzvuTzN1DX4ddAwTCnmxS2axDwaZyzNHL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0x11e3f4156c76feda27ffa117c3f624972471124411067e8f02c9a6909f35d035","urls":["bzz-raw://beb0d9fe2c5fae15f1ca8a22b2c8cfaaa75984f6c8a94534ba85f98366caa6a5","dweb:/ipfs/QmQEFQtyLACb6j7XajAT7Z1KzANE6JzqDYMEQeG8yzrfqP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"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/StorageSlot.sol":{"keccak256":"0xfd29ed7a01e9ef109cc31542ca0f51ba3e793740570b69172ec3d8bfbb1643b4","urls":["bzz-raw://99379e0649be8106d2708a2bde73b5cdaba4505f1001f1586b53788bf971d097","dweb:/ipfs/QmV9cCnvFoVzV2cVDW4Zbs3JQ3ehxBcooQS52taVxR637S"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","id":42548,"exportedSymbols":{"ERC1967Proxy":[41878],"ERC1967Utils":[42172],"IERC1967":[41511],"ITransparentUpgradeableProxy":[42433],"ProxyAdmin":[42412],"TransparentUpgradeableProxy":[42547]},"nodeType":"SourceUnit","src":"133:6338:52","nodes":[{"id":42414,"nodeType":"PragmaDirective","src":"133:24:52","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":42416,"nodeType":"ImportDirective","src":"159:57:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"../ERC1967/ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":42548,"sourceUnit":42173,"symbolAliases":[{"foreign":{"id":42415,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42172,"src":"167:12:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42418,"nodeType":"ImportDirective","src":"217:57:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"../ERC1967/ERC1967Proxy.sol","nameLocation":"-1:-1:-1","scope":42548,"sourceUnit":41879,"symbolAliases":[{"foreign":{"id":42417,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41878,"src":"225:12:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42420,"nodeType":"ImportDirective","src":"275:55:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","nameLocation":"-1:-1:-1","scope":42548,"sourceUnit":41512,"symbolAliases":[{"foreign":{"id":42419,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41511,"src":"283:8:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42422,"nodeType":"ImportDirective","src":"331:44:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","file":"./ProxyAdmin.sol","nameLocation":"-1:-1:-1","scope":42548,"sourceUnit":42413,"symbolAliases":[{"foreign":{"id":42421,"name":"ProxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42412,"src":"339:10:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42433,"nodeType":"ContractDefinition","src":"823:127:52","nodes":[{"id":42432,"nodeType":"FunctionDefinition","src":"880:68:52","nodes":[],"functionSelector":"4f1ef286","implemented":false,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"889:16:52","parameters":{"id":42430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42427,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42432,"src":"906:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42426,"name":"address","nodeType":"ElementaryTypeName","src":"906:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42429,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42432,"src":"915:14:52","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":42428,"name":"bytes","nodeType":"ElementaryTypeName","src":"915:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"905:25:52"},"returnParameters":{"id":42431,"nodeType":"ParameterList","parameters":[],"src":"947:0:52"},"scope":42433,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":42424,"name":"IERC1967","nameLocations":["865:8:52"],"nodeType":"IdentifierPath","referencedDeclaration":41511,"src":"865:8:52"},"id":42425,"nodeType":"InheritanceSpecifier","src":"865:8:52"}],"canonicalName":"ITransparentUpgradeableProxy","contractDependencies":[],"contractKind":"interface","documentation":{"id":42423,"nodeType":"StructuredDocumentation","src":"377:445:52","text":" @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}\n does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch\n mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not\n include them in the ABI so this interface must be used to interact with it."},"fullyImplemented":false,"linearizedBaseContracts":[42433,41511],"name":"ITransparentUpgradeableProxy","nameLocation":"833:28:52","scope":42548,"usedErrors":[],"usedEvents":[41498,41505,41510]},{"id":42547,"nodeType":"ContractDefinition","src":"4239:2231:52","nodes":[{"id":42438,"nodeType":"VariableDeclaration","src":"4633:32:52","nodes":[],"constant":false,"mutability":"immutable","name":"_admin","nameLocation":"4659:6:52","scope":42547,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42437,"name":"address","nodeType":"ElementaryTypeName","src":"4633:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":42441,"nodeType":"ErrorDefinition","src":"4779:31:52","nodes":[],"documentation":{"id":42439,"nodeType":"StructuredDocumentation","src":"4672:102:52","text":" @dev The proxy caller is the current admin, and can't fallback to the proxy target."},"errorSelector":"d2b576ec","name":"ProxyDeniedAdminAccess","nameLocation":"4785:22:52","parameters":{"id":42440,"nodeType":"ParameterList","parameters":[],"src":"4807:2:52"}},{"id":42474,"nodeType":"FunctionDefinition","src":"5082:296:52","nodes":[],"body":{"id":42473,"nodeType":"Block","src":"5188:190:52","nodes":[],"statements":[{"expression":{"id":42464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42455,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42438,"src":"5198:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":42461,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42446,"src":"5230:12:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"5215:14:52","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_ProxyAdmin_$42412_$","typeString":"function (address) returns (contract ProxyAdmin)"},"typeName":{"id":42459,"nodeType":"UserDefinedTypeName","pathNode":{"id":42458,"name":"ProxyAdmin","nameLocations":["5219:10:52"],"nodeType":"IdentifierPath","referencedDeclaration":42412,"src":"5219:10:52"},"referencedDeclaration":42412,"src":"5219:10:52","typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$42412","typeString":"contract ProxyAdmin"}}},"id":42462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5215:28:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$42412","typeString":"contract ProxyAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ProxyAdmin_$42412","typeString":"contract ProxyAdmin"}],"id":42457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5207:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42456,"name":"address","nodeType":"ElementaryTypeName","src":"5207:7:52","typeDescriptions":{}}},"id":42463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5207:37:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5198:46:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":42465,"nodeType":"ExpressionStatement","src":"5198:46:52"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":42469,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42483,"src":"5357:11:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":42470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5357:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":42466,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42172,"src":"5332:12:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$42172_$","typeString":"type(library ERC1967Utils)"}},"id":42468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5345:11:52","memberName":"changeAdmin","nodeType":"MemberAccess","referencedDeclaration":42054,"src":"5332:24:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":42471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5332:39:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42472,"nodeType":"ExpressionStatement","src":"5332:39:52"}]},"documentation":{"id":42442,"nodeType":"StructuredDocumentation","src":"4816:261:52","text":" @dev Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`,\n backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in\n {ERC1967Proxy-constructor}."},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":42451,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42444,"src":"5173:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42452,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42448,"src":"5181:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":42453,"kind":"baseConstructorSpecifier","modifierName":{"id":42450,"name":"ERC1967Proxy","nameLocations":["5160:12:52"],"nodeType":"IdentifierPath","referencedDeclaration":41878,"src":"5160:12:52"},"nodeType":"ModifierInvocation","src":"5160:27:52"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":42449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42444,"mutability":"mutable","name":"_logic","nameLocation":"5102:6:52","nodeType":"VariableDeclaration","scope":42474,"src":"5094:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42443,"name":"address","nodeType":"ElementaryTypeName","src":"5094:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42446,"mutability":"mutable","name":"initialOwner","nameLocation":"5118:12:52","nodeType":"VariableDeclaration","scope":42474,"src":"5110:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42445,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42448,"mutability":"mutable","name":"_data","nameLocation":"5145:5:52","nodeType":"VariableDeclaration","scope":42474,"src":"5132:18:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":42447,"name":"bytes","nodeType":"ElementaryTypeName","src":"5132:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5093:58:52"},"returnParameters":{"id":42454,"nodeType":"ParameterList","parameters":[],"src":"5188:0:52"},"scope":42547,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":42483,"nodeType":"FunctionDefinition","src":"5445:93:52","nodes":[],"body":{"id":42482,"nodeType":"Block","src":"5508:30:52","nodes":[],"statements":[{"expression":{"id":42480,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42438,"src":"5525:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":42479,"id":42481,"nodeType":"Return","src":"5518:13:52"}]},"documentation":{"id":42475,"nodeType":"StructuredDocumentation","src":"5384:56:52","text":" @dev Returns the admin of this proxy."},"implemented":true,"kind":"function","modifiers":[],"name":"_proxyAdmin","nameLocation":"5454:11:52","parameters":{"id":42476,"nodeType":"ParameterList","parameters":[],"src":"5465:2:52"},"returnParameters":{"id":42479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42478,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42483,"src":"5499:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42477,"name":"address","nodeType":"ElementaryTypeName","src":"5499:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5498:9:52"},"scope":42547,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":42517,"nodeType":"FunctionDefinition","src":"5680:369:52","nodes":[],"body":{"id":42516,"nodeType":"Block","src":"5727:322:52","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":42492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":42488,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5741:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":42489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5745:6:52","memberName":"sender","nodeType":"MemberAccess","src":"5741:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":42490,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42483,"src":"5755:11:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":42491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5755:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5741:27:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":42514,"nodeType":"Block","src":"6001:42:52","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":42509,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6015:5:52","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TransparentUpgradeableProxy_$42547_$","typeString":"type(contract super TransparentUpgradeableProxy)"}},"id":42511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6021:9:52","memberName":"_fallback","nodeType":"MemberAccess","referencedDeclaration":42199,"src":"6015:15:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":42512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6015:17:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42513,"nodeType":"ExpressionStatement","src":"6015:17:52"}]},"id":42515,"nodeType":"IfStatement","src":"5737:306:52","trueBody":{"id":42508,"nodeType":"Block","src":"5770:225:52","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":42498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":42493,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5788:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":42494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5792:3:52","memberName":"sig","nodeType":"MemberAccess","src":"5788:7:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":42495,"name":"ITransparentUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42433,"src":"5799:28:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITransparentUpgradeableProxy_$42433_$","typeString":"type(contract ITransparentUpgradeableProxy)"}},"id":42496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5828:16:52","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":42432,"src":"5799:45:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function ITransparentUpgradeableProxy.upgradeToAndCall(address,bytes calldata) payable"}},"id":42497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5845:8:52","memberName":"selector","nodeType":"MemberAccess","src":"5799:54:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5788:65:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":42506,"nodeType":"Block","src":"5925:60:52","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":42503,"name":"_dispatchUpgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42546,"src":"5943:25:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":42504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5943:27:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42505,"nodeType":"ExpressionStatement","src":"5943:27:52"}]},"id":42507,"nodeType":"IfStatement","src":"5784:201:52","trueBody":{"id":42502,"nodeType":"Block","src":"5855:64:52","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":42499,"name":"ProxyDeniedAdminAccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42441,"src":"5880:22:52","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":42500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5880:24:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42501,"nodeType":"RevertStatement","src":"5873:31:52"}]}}]}}]},"baseFunctions":[42199],"documentation":{"id":42484,"nodeType":"StructuredDocumentation","src":"5544:131:52","text":" @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior."},"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"5689:9:52","overrides":{"id":42486,"nodeType":"OverrideSpecifier","overrides":[],"src":"5718:8:52"},"parameters":{"id":42485,"nodeType":"ParameterList","parameters":[],"src":"5698:2:52"},"returnParameters":{"id":42487,"nodeType":"ParameterList","parameters":[],"src":"5727:0:52"},"scope":42547,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":42546,"nodeType":"FunctionDefinition","src":"6251:217:52","nodes":[],"body":{"id":42545,"nodeType":"Block","src":"6296:172:52","nodes":[],"statements":[{"assignments":[42522,42524],"declarations":[{"constant":false,"id":42522,"mutability":"mutable","name":"newImplementation","nameLocation":"6315:17:52","nodeType":"VariableDeclaration","scope":42545,"src":"6307:25:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42521,"name":"address","nodeType":"ElementaryTypeName","src":"6307:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42524,"mutability":"mutable","name":"data","nameLocation":"6347:4:52","nodeType":"VariableDeclaration","scope":42545,"src":"6334:17:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":42523,"name":"bytes","nodeType":"ElementaryTypeName","src":"6334:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":42537,"initialValue":{"arguments":[{"baseExpression":{"expression":{"id":42527,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6366:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":42528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6370:4:52","memberName":"data","nodeType":"MemberAccess","src":"6366:8:52","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":42530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"6366:12:52","startExpression":{"hexValue":"34","id":42529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6375:1:52","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"components":[{"id":42532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6381:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42531,"name":"address","nodeType":"ElementaryTypeName","src":"6381:7:52","typeDescriptions":{}}},{"id":42534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6390:5:52","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":42533,"name":"bytes","nodeType":"ElementaryTypeName","src":"6390:5:52","typeDescriptions":{}}}],"id":42535,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6380:16:52","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}],"expression":{"id":42525,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6355:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":42526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6359:6:52","memberName":"decode","nodeType":"MemberAccess","src":"6355:10:52","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":42536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6355:42:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_bytes_memory_ptr_$","typeString":"tuple(address payable,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6306:91:52"},{"expression":{"arguments":[{"id":42541,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42522,"src":"6437:17:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42542,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42524,"src":"6456:4:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":42538,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42172,"src":"6407:12:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$42172_$","typeString":"type(library ERC1967Utils)"}},"id":42540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6420:16:52","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":41987,"src":"6407:29:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":42543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6407:54:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42544,"nodeType":"ExpressionStatement","src":"6407:54:52"}]},"documentation":{"id":42518,"nodeType":"StructuredDocumentation","src":"6055:191:52","text":" @dev Upgrade the implementation of the proxy. See {ERC1967Utils-upgradeToAndCall}.\n Requirements:\n - If `data` is empty, `msg.value` must be zero."},"implemented":true,"kind":"function","modifiers":[],"name":"_dispatchUpgradeToAndCall","nameLocation":"6260:25:52","parameters":{"id":42519,"nodeType":"ParameterList","parameters":[],"src":"6285:2:52"},"returnParameters":{"id":42520,"nodeType":"ParameterList","parameters":[],"src":"6296:0:52"},"scope":42547,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":42435,"name":"ERC1967Proxy","nameLocations":["4279:12:52"],"nodeType":"IdentifierPath","referencedDeclaration":41878,"src":"4279:12:52"},"id":42436,"nodeType":"InheritanceSpecifier","src":"4279:12:52"}],"canonicalName":"TransparentUpgradeableProxy","contractDependencies":[42412],"contractKind":"contract","documentation":{"id":42434,"nodeType":"StructuredDocumentation","src":"952:3286:52","text":" @dev This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance.\n To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n clashing], which can potentially be used in an attack, this contract uses the\n https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n things that go hand in hand:\n 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself.\n 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to\n the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating\n the proxy admin cannot fallback to the target implementation.\n These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a\n dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to\n call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and\n allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative\n interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership.\n NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not\n inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch\n mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to\n fully implement transparency without decoding reverts caused by selector clashes between the proxy and the\n implementation.\n NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a\n meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract.\n IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an\n immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be\n overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an\n undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot\n is generally fine if the implementation is trusted.\n WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the\n compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new\n function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This\n could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency."},"fullyImplemented":true,"linearizedBaseContracts":[42547,41878,42208],"name":"TransparentUpgradeableProxy","nameLocation":"4248:27:52","scope":42548,"usedErrors":[41898,41903,41911,42441,43623,43915],"usedEvents":[41498,41505]}],"license":"MIT"},"id":52} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_logic","type":"address","internalType":"address"},{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_data","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidAdmin","inputs":[{"name":"admin","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"ProxyDeniedAdminAccess","inputs":[]}],"bytecode":{"object":"0x60a0604052610a97803803806100148161026b565b92833981016060828203126102675761002c82610290565b61003860208401610290565b604084015190936001600160401b03821161026757019180601f8401121561026757825161006d610068826102a4565b61026b565b9381855260208501926020838301011161026757815f926020809301855e85010152813b15610246577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561022e575f809161012d945190845af43d15610226573d9161011e610068846102a4565b9283523d5f602085013e6102bf565b505b604051906104408083016001600160401b0381118482101761021257602092849261063784396001600160a01b031681520301905ff080156102075760018060a01b0316806080525f516020610a775f395f51905f52547f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6040805160018060a01b0384168152846020820152a181156101f4576001600160a01b031916175f516020610a775f395f51905f5255604051610319908161031e82396080518160070152f35b633173bdd160e11b5f525f60045260245ffd5b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6060916102bf565b505050341561012f5763b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761021257604052565b51906001600160a01b038216820361026757565b6001600160401b03811161021257601f01601f191660200190565b906102e357508051156102d457805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610314575b6102f4575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102ec56fe6080604052337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610066575f356001600160e01b03191663278f794360e11b1461005c576334ad5dbb60e21b5f5260045ffd5b61006461010a565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156100ab573d5ff35b3d5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100e957604052565b6100af565b67ffffffffffffffff81116100e957601f01601f191660200190565b36600411610193576040366003190112610193576004356001600160a01b03811690819003610193576024359067ffffffffffffffff8211610193573660238301121561019357816004013590610168610163836100ee565b6100c3565b918083523660248286010111610193576020815f92602461019197018387013784010152610197565b565b5f80fd5b90813b1561022b577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610213576102109161024c565b50565b50503461021c57565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f8061027e93602081519101845af43d15610281573d9161026f610163846100ee565b9283523d5f602085013e610285565b90565b6060915b906102a9575080511561029a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806102da575b6102ba575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102b256fea264697066735822122021f763edfd503c6fd0b60e702d4606336df754d6e646e7f392b431d8159d1d7e64736f6c634300081c003360803460b857601f61044038819003918201601f19168301916001600160401b0383118484101760bc5780849260209460405283398101031260b857516001600160a01b0381169081900360b857801560a5575f80546001600160a01b031981168317825560405192916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361036f90816100d18239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f5f3560e01c8063715018a6146102765780638da5cb5b1461024f5780639623609d1461012c578063ad3cb1cc146100df5763f2fde38b14610051575f80fd5b346100dc5760203660031901126100dc576004356001600160a01b038116908190036100da5761007f610313565b80156100c65781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346100dc57806003193601126100dc57506101286040516101026040826102cd565b60058152640352e302e360dc1b60208201526040519182916020835260208301906102ef565b0390f35b506060366003190112610237576004356001600160a01b03811690819003610237576024356001600160a01b038116908190036102375760443567ffffffffffffffff8111610237573660238201121561023757806004013567ffffffffffffffff811161023b57604051916101ac601f8301601f1916602001846102cd565b818352366024838301011161023757815f9260246020930183860137830101526101d4610313565b823b156102375761020a925f9260405180958194829363278f794360e11b845260048401526040602484015260448301906102ef565b039134905af1801561022c5761021e575080f35b61022a91505f906102cd565b005b6040513d5f823e3d90fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b34610237575f366003190112610237575f546040516001600160a01b039091168152602090f35b34610237575f3660031901126102375761028e610313565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b90601f8019910116810190811067ffffffffffffffff82111761023b57604052565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b5f546001600160a01b0316330361032657565b63118cdaa760e01b5f523360045260245ffdfea264697066735822122072d964e6e89c0990604c1cd0a5da2d38a6458c147c11f636005ef4deafc0d32d64736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103","sourceMap":"4314:2231:45:-:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4314:2231:45;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;4314:2231:45;;;;;;;;;;;1748:29:39;;:34;1744:119;;811:66;4314:2231:45;;-1:-1:-1;;;;;;4314:2231:45;-1:-1:-1;;;;;4314:2231:45;;;;;;;;2407:36:39;-1:-1:-1;;2407:36:39;4314:2231:45;;2458:15:39;:11;;-1:-1:-1;4049:25:50;;4091:55;4049:25;;;;;;4314:2231:45;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;4314:2231:45;;;;4091:55:50;:::i;:::-;;2454:148:39;4314:2231:45;;;5290:28;;;;-1:-1:-1;;;;;5290:28:45;;;;;;;;4314:2231;5290:28;;;;;;-1:-1:-1;;;;;4314:2231:45;;;5290:28;;;-1:-1:-1;5290:28:45;;;;;4314:2231;;;;;;5273:46;;;-1:-1:-1;;;;;;;;;;;2868:66:39;3890:43;4314:2231:45;;;;;;;;;;;;;;;;;3890:43:39;3549:22;;3545:91;;-1:-1:-1;;;;;;4314:2231:45;;-1:-1:-1;;;;;;;;;;;4314:2231:45;;;;;;;;;5273:46;4314:2231;;;;;;3545:91:39;3594:31;;;-1:-1:-1;3594:31:39;-1:-1:-1;3594:31:39;4314:2231:45;;-1:-1:-1;3594:31:39;5290:28:45;4314:2231;;;-1:-1:-1;4314:2231:45;;;;;5290:28;4314:2231;;;-1:-1:-1;4314:2231:45;;;;;-1:-1:-1;4314:2231:45;;;;4091:55:50;:::i;2454:148:39:-;6163:9;;;;6159:70;2454:148;6159:70;6199:19;;;-1:-1:-1;6199:19:39;;-1:-1:-1;6199:19:39;1744:119;-1:-1:-1;;;;;1805:47:39;;;-1:-1:-1;;;;;4314:2231:45;;;;1805:47:39;4314:2231:45;;;1805:47:39;4314:2231:45;-1:-1:-1;4314:2231:45;;;;;;;;;-1:-1:-1;;4314:2231:45;;;-1:-1:-1;;;;;4314:2231:45;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;4314:2231:45;;;;;;:::o;:::-;-1:-1:-1;;;;;4314:2231:45;;;;;;-1:-1:-1;;4314:2231:45;;;;:::o;4421:582:50:-;;4593:8;;-1:-1:-1;4314:2231:45;;5674:21:50;:17;;5799:158;;;;;;5670:354;5994:19;;;5694:1;5994:19;;5694:1;5994:19;4589:408;4314:2231:45;;4841:22:50;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:50;4917:24;;;-1:-1:-1;;;;;4314:2231:45;;;;4917:24:50;4314:2231:45;;;4917:24:50;4841:49;4867:18;;;:23;4841:49;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610066575f356001600160e01b03191663278f794360e11b1461005c576334ad5dbb60e21b5f5260045ffd5b61006461010a565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156100ab573d5ff35b3d5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100e957604052565b6100af565b67ffffffffffffffff81116100e957601f01601f191660200190565b36600411610193576040366003190112610193576004356001600160a01b03811690819003610193576024359067ffffffffffffffff8211610193573660238301121561019357816004013590610168610163836100ee565b6100c3565b918083523660248286010111610193576020815f92602461019197018387013784010152610197565b565b5f80fd5b90813b1561022b577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610213576102109161024c565b50565b50503461021c57565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f8061027e93602081519101845af43d15610281573d9161026f610163846100ee565b9283523d5f602085013e610285565b90565b6060915b906102a9575080511561029a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806102da575b6102ba575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102b256fea264697066735822122021f763edfd503c6fd0b60e702d4606336df754d6e646e7f392b431d8159d1d7e64736f6c634300081c0033","sourceMap":"4314:2231:45:-:0;;;5816:10;5600:6;-1:-1:-1;;;;;4314:2231:45;5816:27;4314:2231;;5863:7;;-1:-1:-1;;;;;;5863:7:45;-1:-1:-1;;;5863:65:45;5874:54;;5955:24;;;5863:7;5955:24;;5863:7;5955:24;5859:201;;;:::i;:::-;4314:2231;5812:306;811:66:39;;-1:-1:-1;;;;;;;;;4314:2231:45;1019:819:40;-1:-1:-1;;1019:819:40;;;;;;;-1:-1:-1;1019:819:40;;;;;;-1:-1:-1;1019:819:40;;;-1:-1:-1;1019:819:40;4314:2231:45;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4314:2231:45;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;-1:-1:-1;;4314:2231:45;;;;:::o;6326:217::-;6441:8;6450:1;4314:2231;;;;6441:8;-1:-1:-1;;4314:2231:45;;;;6450:1;4314:2231;-1:-1:-1;;;;;4314:2231:45;;;;;;;;;;;;;;;;6441:8;4314:2231;;;;;;;;6450:1;4314:2231;;;;;;;:::i;:::-;;:::i;:::-;;;;;6441:8;4314:2231;;;;;;;;;;6441:8;4314:2231;;6531:4;4314:2231;;;;;;;;;;6531:4;:::i;:::-;6326:217::o;4314:2231::-;6441:8;4314:2231;;2264:344:39;;1748:29;;:34;1744:119;;811:66;4314:2231:45;;-1:-1:-1;;;;;;4314:2231:45;-1:-1:-1;;;;;4314:2231:45;;;;;;;;2407:36:39;-1:-1:-1;;2407:36:39;4314:2231:45;;2458:15:39;:11;;2489:53;;;:::i;:::-;;2264:344::o;2454:148::-;6163:9;;;6159:70;;2264:344::o;6159:70::-;6199:19;;;1781:1;6199:19;;1781:1;6199:19;1744:119;-1:-1:-1;;;;1781:1:39;1805:47;;;-1:-1:-1;;;;;4314:2231:45;;;;1805:47:39;4314:2231:45;;;1805:47:39;3900:253:50;4049:25;3900:253;4091:55;3900:253;4049:25;;;;;;;;4314:2231:45;;;;;;;;;;:::i;:::-;;;;;4049:25:50;;4314:2231:45;;;4091:55:50;:::i;:::-;3900:253;:::o;4314:2231:45:-;;;4421:582:50;;4593:8;;-1:-1:-1;4314:2231:45;;5674:21:50;:17;;5799:158;;;;;;5670:354;5994:19;;;5694:1;5994:19;;5694:1;5994:19;4589:408;4314:2231:45;;4841:22:50;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:50;4917:24;;;-1:-1:-1;;;;;4314:2231:45;;;;4917:24:50;4314:2231:45;;;4917:24:50;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"43111":[{"start":7,"length":32}]}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProxyDeniedAdminAccess\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself. 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating the proxy admin cannot fallback to the target implementation. These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership. NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to fully implement transparency without decoding reverts caused by selector clashes between the proxy and the implementation. NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract. IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot is generally fine if the implementation is trusted. WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"ProxyDeniedAdminAccess()\":[{\"details\":\"The proxy caller is the current admin, and can't fallback to the proxy target.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":\"TransparentUpgradeableProxy\"},\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d\",\"dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0xeb19221d51578ea190f0b7d807c5f196db6ff4eca90fee396f45ce9669080ba0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e4ca4196dab20274d1276d902d17034065f014aeebf496f20e39e760899650b0\",\"dweb:/ipfs/QmXFoF93GmZgZHbUvSqLjBGnQ3MY429Bnvk7SvLKEUsEAN\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0x724b755843cff10a8e1503d374b857c9e7648be24e7acf1e5bee0584f1b0505c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740ad3ba1c12e426ea32cf234f445431a13efa8dbed38b53c869237e31fc8347\",\"dweb:/ipfs/QmQ3UKUnBQn4gjxjDNGuDLQWuQqcxWzyj1HzwjFgjAJBqh\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"type":"error","name":"ERC1967InvalidAdmin"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"ProxyDeniedAdminAccess"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."}},"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/","symbiotic-core/=lib/symbiotic-core/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a","urls":["bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d","dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06","urls":["bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c","dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0xeb19221d51578ea190f0b7d807c5f196db6ff4eca90fee396f45ce9669080ba0","urls":["bzz-raw://e4ca4196dab20274d1276d902d17034065f014aeebf496f20e39e760899650b0","dweb:/ipfs/QmXFoF93GmZgZHbUvSqLjBGnQ3MY429Bnvk7SvLKEUsEAN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0x724b755843cff10a8e1503d374b857c9e7648be24e7acf1e5bee0584f1b0505c","urls":["bzz-raw://740ad3ba1c12e426ea32cf234f445431a13efa8dbed38b53c869237e31fc8347","dweb:/ipfs/QmQ3UKUnBQn4gjxjDNGuDLQWuQqcxWzyj1HzwjFgjAJBqh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","id":43221,"exportedSymbols":{"ERC1967Proxy":[42550],"ERC1967Utils":[42844],"IERC1967":[42187],"ITransparentUpgradeableProxy":[43106],"ProxyAdmin":[43084],"TransparentUpgradeableProxy":[43220]},"nodeType":"SourceUnit","src":"133:6413:45","nodes":[{"id":43086,"nodeType":"PragmaDirective","src":"133:24:45","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":43088,"nodeType":"ImportDirective","src":"159:57:45","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"../ERC1967/ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":43221,"sourceUnit":42845,"symbolAliases":[{"foreign":{"id":43087,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42844,"src":"167:12:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":43090,"nodeType":"ImportDirective","src":"217:57:45","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"../ERC1967/ERC1967Proxy.sol","nameLocation":"-1:-1:-1","scope":43221,"sourceUnit":42551,"symbolAliases":[{"foreign":{"id":43089,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42550,"src":"225:12:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":43092,"nodeType":"ImportDirective","src":"275:55:45","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","nameLocation":"-1:-1:-1","scope":43221,"sourceUnit":42188,"symbolAliases":[{"foreign":{"id":43091,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42187,"src":"283:8:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":43094,"nodeType":"ImportDirective","src":"331:44:45","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","file":"./ProxyAdmin.sol","nameLocation":"-1:-1:-1","scope":43221,"sourceUnit":43085,"symbolAliases":[{"foreign":{"id":43093,"name":"ProxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43084,"src":"339:10:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":43106,"nodeType":"ContractDefinition","src":"823:202:45","nodes":[{"id":43105,"nodeType":"FunctionDefinition","src":"932:91:45","nodes":[],"documentation":{"id":43098,"nodeType":"StructuredDocumentation","src":"880:47:45","text":"@dev See {UUPSUpgradeable-upgradeToAndCall}"},"functionSelector":"4f1ef286","implemented":false,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"941:16:45","parameters":{"id":43103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43100,"mutability":"mutable","name":"newImplementation","nameLocation":"966:17:45","nodeType":"VariableDeclaration","scope":43105,"src":"958:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43099,"name":"address","nodeType":"ElementaryTypeName","src":"958:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43102,"mutability":"mutable","name":"data","nameLocation":"1000:4:45","nodeType":"VariableDeclaration","scope":43105,"src":"985:19:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":43101,"name":"bytes","nodeType":"ElementaryTypeName","src":"985:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"957:48:45"},"returnParameters":{"id":43104,"nodeType":"ParameterList","parameters":[],"src":"1022:0:45"},"scope":43106,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":43096,"name":"IERC1967","nameLocations":["865:8:45"],"nodeType":"IdentifierPath","referencedDeclaration":42187,"src":"865:8:45"},"id":43097,"nodeType":"InheritanceSpecifier","src":"865:8:45"}],"canonicalName":"ITransparentUpgradeableProxy","contractDependencies":[],"contractKind":"interface","documentation":{"id":43095,"nodeType":"StructuredDocumentation","src":"377:445:45","text":" @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}\n does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch\n mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not\n include them in the ABI so this interface must be used to interact with it."},"fullyImplemented":false,"linearizedBaseContracts":[43106,42187],"name":"ITransparentUpgradeableProxy","nameLocation":"833:28:45","scope":43221,"usedErrors":[],"usedEvents":[42174,42181,42186]},{"id":43220,"nodeType":"ContractDefinition","src":"4314:2231:45","nodes":[{"id":43111,"nodeType":"VariableDeclaration","src":"4708:32:45","nodes":[],"constant":false,"mutability":"immutable","name":"_admin","nameLocation":"4734:6:45","scope":43220,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43110,"name":"address","nodeType":"ElementaryTypeName","src":"4708:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":43114,"nodeType":"ErrorDefinition","src":"4854:31:45","nodes":[],"documentation":{"id":43112,"nodeType":"StructuredDocumentation","src":"4747:102:45","text":" @dev The proxy caller is the current admin, and can't fallback to the proxy target."},"errorSelector":"d2b576ec","name":"ProxyDeniedAdminAccess","nameLocation":"4860:22:45","parameters":{"id":43113,"nodeType":"ParameterList","parameters":[],"src":"4882:2:45"}},{"id":43147,"nodeType":"FunctionDefinition","src":"5157:296:45","nodes":[],"body":{"id":43146,"nodeType":"Block","src":"5263:190:45","nodes":[],"statements":[{"expression":{"id":43137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43128,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43111,"src":"5273:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":43134,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43119,"src":"5305:12:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":43133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"5290:14:45","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_ProxyAdmin_$43084_$","typeString":"function (address) returns (contract ProxyAdmin)"},"typeName":{"id":43132,"nodeType":"UserDefinedTypeName","pathNode":{"id":43131,"name":"ProxyAdmin","nameLocations":["5294:10:45"],"nodeType":"IdentifierPath","referencedDeclaration":43084,"src":"5294:10:45"},"referencedDeclaration":43084,"src":"5294:10:45","typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$43084","typeString":"contract ProxyAdmin"}}},"id":43135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5290:28:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$43084","typeString":"contract ProxyAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ProxyAdmin_$43084","typeString":"contract ProxyAdmin"}],"id":43130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5282:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":43129,"name":"address","nodeType":"ElementaryTypeName","src":"5282:7:45","typeDescriptions":{}}},"id":43136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5282:37:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5273:46:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":43138,"nodeType":"ExpressionStatement","src":"5273:46:45"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":43142,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43156,"src":"5432:11:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":43143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5432:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":43139,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42844,"src":"5407:12:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$42844_$","typeString":"type(library ERC1967Utils)"}},"id":43141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5420:11:45","memberName":"changeAdmin","nodeType":"MemberAccess","referencedDeclaration":42726,"src":"5407:24:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":43144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5407:39:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":43145,"nodeType":"ExpressionStatement","src":"5407:39:45"}]},"documentation":{"id":43115,"nodeType":"StructuredDocumentation","src":"4891:261:45","text":" @dev Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`,\n backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in\n {ERC1967Proxy-constructor}."},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":43124,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43117,"src":"5248:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":43125,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43121,"src":"5256:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":43126,"kind":"baseConstructorSpecifier","modifierName":{"id":43123,"name":"ERC1967Proxy","nameLocations":["5235:12:45"],"nodeType":"IdentifierPath","referencedDeclaration":42550,"src":"5235:12:45"},"nodeType":"ModifierInvocation","src":"5235:27:45"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":43122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43117,"mutability":"mutable","name":"_logic","nameLocation":"5177:6:45","nodeType":"VariableDeclaration","scope":43147,"src":"5169:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43116,"name":"address","nodeType":"ElementaryTypeName","src":"5169:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43119,"mutability":"mutable","name":"initialOwner","nameLocation":"5193:12:45","nodeType":"VariableDeclaration","scope":43147,"src":"5185:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43118,"name":"address","nodeType":"ElementaryTypeName","src":"5185:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43121,"mutability":"mutable","name":"_data","nameLocation":"5220:5:45","nodeType":"VariableDeclaration","scope":43147,"src":"5207:18:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":43120,"name":"bytes","nodeType":"ElementaryTypeName","src":"5207:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5168:58:45"},"returnParameters":{"id":43127,"nodeType":"ParameterList","parameters":[],"src":"5263:0:45"},"scope":43220,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":43156,"nodeType":"FunctionDefinition","src":"5520:93:45","nodes":[],"body":{"id":43155,"nodeType":"Block","src":"5583:30:45","nodes":[],"statements":[{"expression":{"id":43153,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43111,"src":"5600:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":43152,"id":43154,"nodeType":"Return","src":"5593:13:45"}]},"documentation":{"id":43148,"nodeType":"StructuredDocumentation","src":"5459:56:45","text":" @dev Returns the admin of this proxy."},"implemented":true,"kind":"function","modifiers":[],"name":"_proxyAdmin","nameLocation":"5529:11:45","parameters":{"id":43149,"nodeType":"ParameterList","parameters":[],"src":"5540:2:45"},"returnParameters":{"id":43152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43151,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":43156,"src":"5574:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43150,"name":"address","nodeType":"ElementaryTypeName","src":"5574:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5573:9:45"},"scope":43220,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":43190,"nodeType":"FunctionDefinition","src":"5755:369:45","nodes":[],"body":{"id":43189,"nodeType":"Block","src":"5802:322:45","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":43165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":43161,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5816:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":43162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5820:6:45","memberName":"sender","nodeType":"MemberAccess","src":"5816:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":43163,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43156,"src":"5830:11:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":43164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5830:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5816:27:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":43187,"nodeType":"Block","src":"6076:42:45","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":43182,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6090:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TransparentUpgradeableProxy_$43220_$","typeString":"type(contract super TransparentUpgradeableProxy)"}},"id":43184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6096:9:45","memberName":"_fallback","nodeType":"MemberAccess","referencedDeclaration":42871,"src":"6090:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":43185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6090:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":43186,"nodeType":"ExpressionStatement","src":"6090:17:45"}]},"id":43188,"nodeType":"IfStatement","src":"5812:306:45","trueBody":{"id":43181,"nodeType":"Block","src":"5845:225:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":43171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":43166,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5863:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":43167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5867:3:45","memberName":"sig","nodeType":"MemberAccess","src":"5863:7:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":43168,"name":"ITransparentUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43106,"src":"5874:28:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITransparentUpgradeableProxy_$43106_$","typeString":"type(contract ITransparentUpgradeableProxy)"}},"id":43169,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5903:16:45","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":43105,"src":"5874:45:45","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function ITransparentUpgradeableProxy.upgradeToAndCall(address,bytes calldata) payable"}},"id":43170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5920:8:45","memberName":"selector","nodeType":"MemberAccess","src":"5874:54:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5863:65:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":43179,"nodeType":"Block","src":"6000:60:45","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":43176,"name":"_dispatchUpgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43219,"src":"6018:25:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":43177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6018:27:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":43178,"nodeType":"ExpressionStatement","src":"6018:27:45"}]},"id":43180,"nodeType":"IfStatement","src":"5859:201:45","trueBody":{"id":43175,"nodeType":"Block","src":"5930:64:45","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":43172,"name":"ProxyDeniedAdminAccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43114,"src":"5955:22:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":43173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5955:24:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43174,"nodeType":"RevertStatement","src":"5948:31:45"}]}}]}}]},"baseFunctions":[42871],"documentation":{"id":43157,"nodeType":"StructuredDocumentation","src":"5619:131:45","text":" @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior."},"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"5764:9:45","overrides":{"id":43159,"nodeType":"OverrideSpecifier","overrides":[],"src":"5793:8:45"},"parameters":{"id":43158,"nodeType":"ParameterList","parameters":[],"src":"5773:2:45"},"returnParameters":{"id":43160,"nodeType":"ParameterList","parameters":[],"src":"5802:0:45"},"scope":43220,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":43219,"nodeType":"FunctionDefinition","src":"6326:217:45","nodes":[],"body":{"id":43218,"nodeType":"Block","src":"6371:172:45","nodes":[],"statements":[{"assignments":[43195,43197],"declarations":[{"constant":false,"id":43195,"mutability":"mutable","name":"newImplementation","nameLocation":"6390:17:45","nodeType":"VariableDeclaration","scope":43218,"src":"6382:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43194,"name":"address","nodeType":"ElementaryTypeName","src":"6382:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43197,"mutability":"mutable","name":"data","nameLocation":"6422:4:45","nodeType":"VariableDeclaration","scope":43218,"src":"6409:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":43196,"name":"bytes","nodeType":"ElementaryTypeName","src":"6409:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":43210,"initialValue":{"arguments":[{"baseExpression":{"expression":{"id":43200,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6441:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":43201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6445:4:45","memberName":"data","nodeType":"MemberAccess","src":"6441:8:45","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":43203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"6441:12:45","startExpression":{"hexValue":"34","id":43202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6450:1:45","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"components":[{"id":43205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6456:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":43204,"name":"address","nodeType":"ElementaryTypeName","src":"6456:7:45","typeDescriptions":{}}},{"id":43207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6465:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":43206,"name":"bytes","nodeType":"ElementaryTypeName","src":"6465:5:45","typeDescriptions":{}}}],"id":43208,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6455:16:45","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}],"expression":{"id":43198,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6430:3:45","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":43199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6434:6:45","memberName":"decode","nodeType":"MemberAccess","src":"6430:10:45","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":43209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:42:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_bytes_memory_ptr_$","typeString":"tuple(address payable,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6381:91:45"},{"expression":{"arguments":[{"id":43214,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43195,"src":"6512:17:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":43215,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43197,"src":"6531:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":43211,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42844,"src":"6482:12:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$42844_$","typeString":"type(library ERC1967Utils)"}},"id":43213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6495:16:45","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":42659,"src":"6482:29:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":43216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6482:54:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":43217,"nodeType":"ExpressionStatement","src":"6482:54:45"}]},"documentation":{"id":43191,"nodeType":"StructuredDocumentation","src":"6130:191:45","text":" @dev Upgrade the implementation of the proxy. See {ERC1967Utils-upgradeToAndCall}.\n Requirements:\n - If `data` is empty, `msg.value` must be zero."},"implemented":true,"kind":"function","modifiers":[],"name":"_dispatchUpgradeToAndCall","nameLocation":"6335:25:45","parameters":{"id":43192,"nodeType":"ParameterList","parameters":[],"src":"6360:2:45"},"returnParameters":{"id":43193,"nodeType":"ParameterList","parameters":[],"src":"6371:0:45"},"scope":43220,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":43108,"name":"ERC1967Proxy","nameLocations":["4354:12:45"],"nodeType":"IdentifierPath","referencedDeclaration":42550,"src":"4354:12:45"},"id":43109,"nodeType":"InheritanceSpecifier","src":"4354:12:45"}],"canonicalName":"TransparentUpgradeableProxy","contractDependencies":[43084],"contractKind":"contract","documentation":{"id":43107,"nodeType":"StructuredDocumentation","src":"1027:3286:45","text":" @dev This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance.\n To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n clashing], which can potentially be used in an attack, this contract uses the\n https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n things that go hand in hand:\n 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself.\n 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to\n the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating\n the proxy admin cannot fallback to the target implementation.\n These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a\n dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to\n call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and\n allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative\n interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership.\n NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not\n inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch\n mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to\n fully implement transparency without decoding reverts caused by selector clashes between the proxy and the\n implementation.\n NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a\n meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract.\n IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an\n immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be\n overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an\n undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot\n is generally fine if the implementation is trusted.\n WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the\n compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new\n function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This\n could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency."},"fullyImplemented":true,"linearizedBaseContracts":[43220,42550,42880],"name":"TransparentUpgradeableProxy","nameLocation":"4323:27:45","scope":43221,"usedErrors":[42570,42575,42583,43114,43885,44177],"usedEvents":[42174,42181]}],"license":"MIT"},"id":45} \ No newline at end of file diff --git a/ethexe/ethereum/WrappedVara.json b/ethexe/ethereum/WrappedVara.json index 8b7ba0e89ba..ed14b886b8f 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":"pure"},{"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":"0x6080806040523460aa575f516020611d6d5f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b604051611cbe90816100af8239f35b6001600160401b0319166001600160401b039081175f516020611d6d5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120d578063095ea7b3146111e757806318160ddd146111be57806323b872dd14611186578063313ce5671461116b5780633644e5151461114957806340c10f191461110c57806342966c68146110ef5780636c2eb3501461105557806370a0823114611011578063715018a614610faa57806379cc679014610f7a5780637ecebe0014610f2457806384b0196e14610c505780638da5cb5b14610c1c57806395d89b4114610b22578063a9059cbb14610af1578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112ee565b6101246115b2565b6113ac565b005b5f80fd5b3461012b57604036600319011261012b576101486112ee565b610159610153611304565b91611374565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112ee565b610197611304565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611352565b5190206102636117c0565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611852565b909291926118df565b6001600160a01b03168481036102ae5750610129935061169b565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112ee565b5f516020611c695f395f51905f52549060ff8260401c16159167ffffffffffffffff811680159081610ae9575b6001149081610adf575b159081610ad6575b50610ac75767ffffffffffffffff1981166001175f516020611c695f395f51905f525582610a9b575b5060405191610369604084611352565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611352565b6005835264575641524160d81b60208401526103ab611827565b6103b3611827565b835167ffffffffffffffff81116107a8576103db5f516020611b895f395f51905f525461131a565b601f8111610a2c575b50602094601f82116001146109b1579481929394955f926109a6575b50508160011b915f199060031b1c1916175f516020611b895f395f51905f52555b825167ffffffffffffffff81116107a8576104495f516020611be95f395f51905f525461131a565b601f8111610937575b506020601f82116001146108bc57819293945f926108b1575b50508160011b915f199060031b1c1916175f516020611be95f395f51905f52555b610494611827565b61049c611827565b6104a4611827565b6104ad816113ac565b604051916104bc604084611352565b600c83526b57726170706564205661726160a01b60208401526104dd611827565b604051916104ec604084611352565b60018352603160f81b6020840152610502611827565b835167ffffffffffffffff81116107a85761052a5f516020611bc95f395f51905f525461131a565b601f8111610842575b50602094601f82116001146107c7579481929394955f926107bc575b50508160011b915f199060031b1c1916175f516020611bc95f395f51905f52555b825167ffffffffffffffff81116107a8576105985f516020611c495f395f51905f525461131a565b601f8111610739575b506020601f82116001146106be57819293945f926106b3575b50508160011b915f199060031b1c1916175f516020611c495f395f51905f52555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a057670de0b6b3a7640000610643916116fe565b61064957005b68ff0000000000000000195f516020611c695f395f51905f5254165f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f516020611c495f395f51905f525f52805f20915f5b81811061072157509583600195969710610709575b505050811b015f516020611c495f395f51905f52556105db565b01515f1960f88460031b161c191690558480806106ef565b9192602060018192868b0151815501940192016106da565b5f516020611c495f395f51905f525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c8101916020841061079e575b601f0160051c01905b81811061079357506105a1565b5f8155600101610786565b909150819061077d565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f516020611bc95f395f51905f525f52805f20915f5b88811061082a57508360019596979810610812575b505050811b015f516020611bc95f395f51905f5255610570565b01515f1960f88460031b161c191690558580806107f8565b919260206001819286850151815501940192016107e3565b5f516020611bc95f395f51905f525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a7575b601f0160051c01905b81811061089c5750610533565b5f815560010161088f565b9091508190610886565b01519050848061046b565b601f198216905f516020611be95f395f51905f525f52805f20915f5b81811061091f57509583600195969710610907575b505050811b015f516020611be95f395f51905f525561048c565b01515f1960f88460031b161c191690558480806108ed565b9192602060018192868b0151815501940192016108d8565b5f516020611be95f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099c575b601f0160051c01905b8181106109915750610452565b5f8155600101610984565b909150819061097b565b015190508580610400565b601f198216955f516020611b895f395f51905f525f52805f20915f5b888110610a14575083600195969798106109fc575b505050811b015f516020611b895f395f51905f5255610421565b01515f1960f88460031b161c191690558580806109e2565b919260206001819286850151815501940192016109cd565b5f516020611b895f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a91575b601f0160051c01905b818110610a8657506103e4565b5f8155600101610a79565b9091508190610a70565b68ffffffffffffffffff191668010000000000000001175f516020611c695f395f51905f525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b17610b0d6112ee565b60243590336114e1565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f516020611be95f395f51905f5254610b4e8161131a565b8084529060018116908115610bf85750600114610b8e575b610b8a83610b7681850382611352565b6040519182916020835260208301906112ca565b0390f35b5f516020611be95f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610bde57509091508101602001610b76610b66565b919260018160209254838588010152019101909291610bc6565b60ff191660208086019190915291151560051b84019091019150610b769050610b66565b3461012b575f36600319011261012b575f516020611c095f395f51905f52546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efb575b15610ebe576040515f516020611bc95f395f51905f5254815f610cab8361131a565b8083529260018116908115610e9f5750600114610e34575b610ccf92500382611352565b6040515f516020611c495f395f51905f5254815f610cec8361131a565b8083529260018116908115610e155750600114610daa575b610d1791925092610d4e94930382611352565b6020610d5c60405192610d2a8385611352565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112ca565b9085820360408701526112ca565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9357505050500390f35b835185528695509381019392810192600101610d84565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610df9575050906020610d1792820101610d04565b6020919350806001915483858801015201910190918392610de1565b60209250610d1794915060ff191682840152151560051b820101610d04565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e83575050906020610ccf92820101610cc3565b6020919350806001915483858801015201910190918392610e6b565b60209250610ccf94915060ff191682840152151560051b820101610cc3565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c89565b3461012b57602036600319011261012b57610f3d6112ee565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f966112ee565b60243590610fa582338361141d565b6115e5565b3461012b575f36600319011261012b57610fc26115b2565b5f516020611c095f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110326112ee565b165f525f516020611ba95f395f51905f52602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106d6115b2565b5f516020611c695f395f51905f525460ff8160401c1680156110da575b610ac75760029068ffffffffffffffffff1916175f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108a565b3461012b57602036600319011261012b57610129600435336115e5565b3461012b57604036600319011261012b576111256112ee565b61112d6115b2565b6001600160a01b038116156106a05761012990602435906116fe565b3461012b575f36600319011261012b5760206111636117c0565b604051908152f35b3461012b575f36600319011261012b576020604051600c8152f35b3461012b57606036600319011261012b57610b176111a26112ee565b6111aa611304565b604435916111b983338361141d565b6114e1565b3461012b575f36600319011261012b5760205f516020611c295f395f51905f5254604051908152f35b3461012b57604036600319011261012b57610b176112036112ee565b602435903361169b565b3461012b575f36600319011261012b576040515f5f516020611b895f395f51905f52546112398161131a565b8084529060018116908115610bf8575060011461126057610b8a83610b7681850382611352565b5f516020611b895f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b057509091508101602001610b76610b66565b919260018160209254838588010152019101909291611298565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c92168015611348575b602083101461133457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611329565b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140a575f516020611c095f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142883611374565b60018060a01b0382165f5260205260405f2054925f19840361144b575b50505050565b8284106114be576001600160a01b038116156114ab576001600160a01b038216156114985761147990611374565b9060018060a01b03165f5260205260405f20910390555f808080611445565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b031690811561159f576001600160a01b03169182156106a057815f525f516020611ba95f395f51905f5260205260405f205481811061158657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f516020611ba95f395f51905f5284520360405f2055845f525f516020611ba95f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f516020611c095f395f51905f52546001600160a01b031633036115d257565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b0316801561159f57805f525f516020611ba95f395f51905f5260205260405f2054838110611681576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f516020611ba95f395f51905f528452036040862055805f516020611c295f395f51905f5254035f516020611c295f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ab576001600160a01b0316928315611498577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ea602092611374565b855f5282528060405f2055604051908152a3565b5f516020611c295f395f51905f5254908282018092116117ac575f516020611c295f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178a57805f516020611c295f395f51905f5254035f516020611c295f395f51905f52555b604051908152a3565b8484525f516020611ba95f395f51905f52825260408420818154019055611781565b634e487b7160e01b5f52601160045260245ffd5b6117c8611953565b6117d0611a80565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182160c082611352565b51902090565b60ff5f516020611c695f395f51905f525460401c161561184357565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118c9575f516001600160a01b038116156118bf57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561193f57806118f1575050565b600181036119085763f645eedf60e01b5f5260045ffd5b60028103611923575063fce698f760e01b5f5260045260245ffd5b60031461192d5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f516020611bc95f395f51905f5254905f816119718461131a565b9182825260208201946001811690815f14611a6457506001146119f9575b61199b92500382611352565b519081156119a7572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d45790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4857505090602061199b9282010161198f565b6020919350806001915483858801015201910190918392611a30565b60ff191686525061199b92151560051b8201602001905061198f565b6040515f516020611c495f395f51905f5254905f81611a9e8461131a565b9182825260208201946001811690815f14611b6c5750600114611b01575b611ac892500382611352565b51908115611ad4572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d45790565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b50575050906020611ac892820101611abc565b6020919350806001915483858801015201910190918392611b38565b60ff1916865250611ac892151560051b82016020019050611abc56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212203ce164046c34e3abbf805b23e3f25930a1466a485bfda7a2369c75651fa3cfbd64736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"632:990:160:-:0;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;7896:76:26;;-1:-1:-1;;;;;;;;;;;632:990:160;;7985:34:26;7981:146;;-1:-1:-1;632:990:160;;;;;;;;;7981:146:26;-1:-1:-1;;;;;;632:990:160;-1:-1:-1;;;;;632:990:160;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;8087:29:26;;632:990:160;;8087:29:26;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:26;;-1:-1:-1;7938:23:26;632:990:160;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120d578063095ea7b3146111e757806318160ddd146111be57806323b872dd14611186578063313ce5671461116b5780633644e5151461114957806340c10f191461110c57806342966c68146110ef5780636c2eb3501461105557806370a0823114611011578063715018a614610faa57806379cc679014610f7a5780637ecebe0014610f2457806384b0196e14610c505780638da5cb5b14610c1c57806395d89b4114610b22578063a9059cbb14610af1578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112ee565b6101246115b2565b6113ac565b005b5f80fd5b3461012b57604036600319011261012b576101486112ee565b610159610153611304565b91611374565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112ee565b610197611304565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611352565b5190206102636117c0565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611852565b909291926118df565b6001600160a01b03168481036102ae5750610129935061169b565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112ee565b5f516020611c695f395f51905f52549060ff8260401c16159167ffffffffffffffff811680159081610ae9575b6001149081610adf575b159081610ad6575b50610ac75767ffffffffffffffff1981166001175f516020611c695f395f51905f525582610a9b575b5060405191610369604084611352565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611352565b6005835264575641524160d81b60208401526103ab611827565b6103b3611827565b835167ffffffffffffffff81116107a8576103db5f516020611b895f395f51905f525461131a565b601f8111610a2c575b50602094601f82116001146109b1579481929394955f926109a6575b50508160011b915f199060031b1c1916175f516020611b895f395f51905f52555b825167ffffffffffffffff81116107a8576104495f516020611be95f395f51905f525461131a565b601f8111610937575b506020601f82116001146108bc57819293945f926108b1575b50508160011b915f199060031b1c1916175f516020611be95f395f51905f52555b610494611827565b61049c611827565b6104a4611827565b6104ad816113ac565b604051916104bc604084611352565b600c83526b57726170706564205661726160a01b60208401526104dd611827565b604051916104ec604084611352565b60018352603160f81b6020840152610502611827565b835167ffffffffffffffff81116107a85761052a5f516020611bc95f395f51905f525461131a565b601f8111610842575b50602094601f82116001146107c7579481929394955f926107bc575b50508160011b915f199060031b1c1916175f516020611bc95f395f51905f52555b825167ffffffffffffffff81116107a8576105985f516020611c495f395f51905f525461131a565b601f8111610739575b506020601f82116001146106be57819293945f926106b3575b50508160011b915f199060031b1c1916175f516020611c495f395f51905f52555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a057670de0b6b3a7640000610643916116fe565b61064957005b68ff0000000000000000195f516020611c695f395f51905f5254165f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f516020611c495f395f51905f525f52805f20915f5b81811061072157509583600195969710610709575b505050811b015f516020611c495f395f51905f52556105db565b01515f1960f88460031b161c191690558480806106ef565b9192602060018192868b0151815501940192016106da565b5f516020611c495f395f51905f525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c8101916020841061079e575b601f0160051c01905b81811061079357506105a1565b5f8155600101610786565b909150819061077d565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f516020611bc95f395f51905f525f52805f20915f5b88811061082a57508360019596979810610812575b505050811b015f516020611bc95f395f51905f5255610570565b01515f1960f88460031b161c191690558580806107f8565b919260206001819286850151815501940192016107e3565b5f516020611bc95f395f51905f525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a7575b601f0160051c01905b81811061089c5750610533565b5f815560010161088f565b9091508190610886565b01519050848061046b565b601f198216905f516020611be95f395f51905f525f52805f20915f5b81811061091f57509583600195969710610907575b505050811b015f516020611be95f395f51905f525561048c565b01515f1960f88460031b161c191690558480806108ed565b9192602060018192868b0151815501940192016108d8565b5f516020611be95f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099c575b601f0160051c01905b8181106109915750610452565b5f8155600101610984565b909150819061097b565b015190508580610400565b601f198216955f516020611b895f395f51905f525f52805f20915f5b888110610a14575083600195969798106109fc575b505050811b015f516020611b895f395f51905f5255610421565b01515f1960f88460031b161c191690558580806109e2565b919260206001819286850151815501940192016109cd565b5f516020611b895f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a91575b601f0160051c01905b818110610a8657506103e4565b5f8155600101610a79565b9091508190610a70565b68ffffffffffffffffff191668010000000000000001175f516020611c695f395f51905f525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b17610b0d6112ee565b60243590336114e1565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f516020611be95f395f51905f5254610b4e8161131a565b8084529060018116908115610bf85750600114610b8e575b610b8a83610b7681850382611352565b6040519182916020835260208301906112ca565b0390f35b5f516020611be95f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610bde57509091508101602001610b76610b66565b919260018160209254838588010152019101909291610bc6565b60ff191660208086019190915291151560051b84019091019150610b769050610b66565b3461012b575f36600319011261012b575f516020611c095f395f51905f52546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efb575b15610ebe576040515f516020611bc95f395f51905f5254815f610cab8361131a565b8083529260018116908115610e9f5750600114610e34575b610ccf92500382611352565b6040515f516020611c495f395f51905f5254815f610cec8361131a565b8083529260018116908115610e155750600114610daa575b610d1791925092610d4e94930382611352565b6020610d5c60405192610d2a8385611352565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112ca565b9085820360408701526112ca565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9357505050500390f35b835185528695509381019392810192600101610d84565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610df9575050906020610d1792820101610d04565b6020919350806001915483858801015201910190918392610de1565b60209250610d1794915060ff191682840152151560051b820101610d04565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e83575050906020610ccf92820101610cc3565b6020919350806001915483858801015201910190918392610e6b565b60209250610ccf94915060ff191682840152151560051b820101610cc3565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c89565b3461012b57602036600319011261012b57610f3d6112ee565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f966112ee565b60243590610fa582338361141d565b6115e5565b3461012b575f36600319011261012b57610fc26115b2565b5f516020611c095f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110326112ee565b165f525f516020611ba95f395f51905f52602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106d6115b2565b5f516020611c695f395f51905f525460ff8160401c1680156110da575b610ac75760029068ffffffffffffffffff1916175f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108a565b3461012b57602036600319011261012b57610129600435336115e5565b3461012b57604036600319011261012b576111256112ee565b61112d6115b2565b6001600160a01b038116156106a05761012990602435906116fe565b3461012b575f36600319011261012b5760206111636117c0565b604051908152f35b3461012b575f36600319011261012b576020604051600c8152f35b3461012b57606036600319011261012b57610b176111a26112ee565b6111aa611304565b604435916111b983338361141d565b6114e1565b3461012b575f36600319011261012b5760205f516020611c295f395f51905f5254604051908152f35b3461012b57604036600319011261012b57610b176112036112ee565b602435903361169b565b3461012b575f36600319011261012b576040515f5f516020611b895f395f51905f52546112398161131a565b8084529060018116908115610bf8575060011461126057610b8a83610b7681850382611352565b5f516020611b895f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b057509091508101602001610b76610b66565b919260018160209254838588010152019101909291611298565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c92168015611348575b602083101461133457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611329565b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140a575f516020611c095f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142883611374565b60018060a01b0382165f5260205260405f2054925f19840361144b575b50505050565b8284106114be576001600160a01b038116156114ab576001600160a01b038216156114985761147990611374565b9060018060a01b03165f5260205260405f20910390555f808080611445565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b031690811561159f576001600160a01b03169182156106a057815f525f516020611ba95f395f51905f5260205260405f205481811061158657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f516020611ba95f395f51905f5284520360405f2055845f525f516020611ba95f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f516020611c095f395f51905f52546001600160a01b031633036115d257565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b0316801561159f57805f525f516020611ba95f395f51905f5260205260405f2054838110611681576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f516020611ba95f395f51905f528452036040862055805f516020611c295f395f51905f5254035f516020611c295f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ab576001600160a01b0316928315611498577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ea602092611374565b855f5282528060405f2055604051908152a3565b5f516020611c295f395f51905f5254908282018092116117ac575f516020611c295f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178a57805f516020611c295f395f51905f5254035f516020611c295f395f51905f52555b604051908152a3565b8484525f516020611ba95f395f51905f52825260408420818154019055611781565b634e487b7160e01b5f52601160045260245ffd5b6117c8611953565b6117d0611a80565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182160c082611352565b51902090565b60ff5f516020611c695f395f51905f525460401c161561184357565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118c9575f516001600160a01b038116156118bf57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561193f57806118f1575050565b600181036119085763f645eedf60e01b5f5260045ffd5b60028103611923575063fce698f760e01b5f5260045260245ffd5b60031461192d5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f516020611bc95f395f51905f5254905f816119718461131a565b9182825260208201946001811690815f14611a6457506001146119f9575b61199b92500382611352565b519081156119a7572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d45790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4857505090602061199b9282010161198f565b6020919350806001915483858801015201910190918392611a30565b60ff191686525061199b92151560051b8201602001905061198f565b6040515f516020611c495f395f51905f5254905f81611a9e8461131a565b9182825260208201946001811690815f14611b6c5750600114611b01575b611ac892500382611352565b51908115611ad4572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d45790565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b50575050906020611ac892820101611abc565b6020919350806001915483858801015201910190918392611b38565b60ff1916865250611ac892151560051b82016020019050611abc56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212203ce164046c34e3abbf805b23e3f25930a1466a485bfda7a2369c75651fa3cfbd64736f6c634300081c0033","sourceMap":"632:990:160:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;2357:1:25;632:990:160;;:::i;:::-;2303:62:25;;:::i;:::-;2357:1;:::i;:::-;632:990:160;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;;;:::i;:::-;4867:20:27;632:990:160;;:::i;:::-;4867:20:27;;:::i;:::-;:29;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;;-1:-1:-1;632:990:160;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;2301:15:29;;:26;2297:97;;6967:25:66;7021:8;632:990:160;;;;;;;;;;;;972:64:31;632:990:160;;;;;;;;;;;;;;;;2435:78:29;632:990:160;2435:78:29;;632:990:160;1279:95:29;632:990:160;;1279:95:29;632:990:160;1279:95:29;;632:990:160;;;;;;;;;1279:95:29;;632:990:160;1279:95:29;632:990:160;1279:95:29;;632:990:160;;1279:95:29;;632:990:160;;1279:95:29;;632:990:160;;2435:78:29;;;632:990:160;2435:78:29;;:::i;:::-;632:990:160;2425:89:29;;4094:23:33;;:::i;:::-;3515:233:68;632:990:160;3515:233:68;;-1:-1:-1;;;3515:233:68;;;;;;;;;;632:990:160;;;3515:233:68;632:990:160;;3515:233:68;;6967:25:66;:::i;:::-;7021:8;;;;;:::i;:::-;-1:-1:-1;;;;;632:990:160;2638:15:29;;;2634:88;;10117:4:27;;;;;:::i;2634:88:29:-;2676:35;;;;;632:990:160;2676:35:29;632:990:160;;;;;;2676:35:29;2297:97;2350:33;;;;632:990:160;2350:33:29;632:990:160;;;;2350:33:29;632:990:160;;;;;;-1:-1:-1;;632:990:160;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;4301:16:26;632:990:160;;;;4726:16:26;;:34;;;;632:990:160;4805:1:26;4790:16;:50;;;;632:990:160;4855:13:26;:30;;;;632:990:160;4851:91:26;;;-1:-1:-1;;632:990:160;;4805:1:26;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;4979:67:26;;632:990:160;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:990:160;;;;;;;;;;;:::i;:::-;821:14;632:990;;-1:-1:-1;;;632:990:160;821:14;;;6893:76:26;;:::i;:::-;;;:::i;:::-;632:990:160;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;2600:7:27;632:990:160;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;2600:7:27;632:990:160;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;6893:76:26;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6961:1;;;:::i;:::-;632:990:160;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:990:160;;;;6893:76:26;;:::i;:::-;632:990:160;;;;;;;:::i;:::-;4805:1:26;632:990:160;;-1:-1:-1;;;632:990:160;;;;6893:76:26;;:::i;:::-;632:990:160;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;2600:7:27;632:990:160;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;2600:7:27;632:990:160;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;2806:64:33;632:990:160;;;3902:16:33;632:990:160;-1:-1:-1;;;;;632:990:160;;8803:21:27;8799:91;;941:9:160;8928:5:27;;;:::i;:::-;5066:101:26;;632:990:160;5066:101:26;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;5142:14:26;632:990:160;;;4805:1:26;632:990:160;;5142:14:26;632:990:160;8799:91:27;8847:32;;;632:990:160;8847:32:27;632:990:160;;;;;8847:32:27;632:990:160;;;;-1:-1:-1;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;2600:7:27;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;2600:7:27;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;2600:7:27;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;2600:7:27;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;4979:67:26;-1:-1:-1;;632:990:160;;;-1:-1:-1;;;;;;;;;;;632:990:160;4979:67:26;;;4851:91;6498:23;;;632:990:160;4908:23:26;632:990:160;;4908:23:26;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:26;;4726:34;;;-1:-1:-1;4726:34:26;;632:990:160;;;;;;-1:-1:-1;;632:990:160;;;;4616:5:27;632:990:160;;:::i;:::-;;;966:10:30;;4616:5:27;:::i;:::-;632:990:160;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;-1:-1:-1;632:990:160;;;;;;;-1:-1:-1;632:990:160;;-1:-1:-1;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:160;;-1:-1:-1;632:990:160;;;;;;;;-1:-1:-1;;632:990:160;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;-1:-1:-1;;;;;632:990:160;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;2806:64:33;632:990:160;5777:18:33;:43;;;632:990:160;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5965:13:33;632:990:160;;;;6000:4:33;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:990:160;;;;;;;;;;;;-1:-1:-1;;;632:990:160;;;;;;;5777:43:33;632:990:160;5799:16:33;632:990:160;5799:21:33;5777:43;;632:990:160;;;;;;-1:-1:-1;;632:990:160;;;;;;:::i;:::-;;;;;;;;;972:64:31;632:990:160;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;1479:5:28;632:990:160;;:::i;:::-;;;966:10:30;1448:5:28;966:10:30;;1448:5:28;;:::i;:::-;1479;:::i;632:990:160:-;;;;;;-1:-1:-1;;632:990:160;;;;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:160;;-1:-1:-1;;;;;;632:990:160;;;;;;;-1:-1:-1;;;;;632:990:160;3975:40:25;632:990:160;;3975:40:25;632:990:160;;;;;;;-1:-1:-1;;632:990:160;;;;-1:-1:-1;;;;;632:990:160;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;6431:44:26;;;;632:990:160;6427:105:26;;1427:1:160;632:990;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;6656:20:26;632:990:160;;;1427:1;632:990;;6656:20:26;632:990:160;6431:44:26;632:990:160;1427:1;632:990;;;6450:25:26;;6431:44;;632:990:160;;;;;;-1:-1:-1;;632:990:160;;;;1005:5:28;632:990:160;;966:10:30;1005:5:28;:::i;632:990:160:-;;;;;;-1:-1:-1;;632:990:160;;;;;;:::i;:::-;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;632:990:160;;8803:21:27;8799:91;;8928:5;632:990:160;;;8928:5:27;;:::i;632:990:160:-;;;;;;-1:-1:-1;;632:990:160;;;;;4094:23:33;;:::i;:::-;632:990:160;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;;;;1512:2;632:990;;;;;;;;;-1:-1:-1;;632:990:160;;;;6198:5:27;632:990:160;;:::i;:::-;;;:::i;:::-;;;966:10:30;6162:5:27;966:10:30;;6162:5:27;;:::i;:::-;6198;:::i;632:990:160:-;;;;;;-1:-1:-1;;632:990:160;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;10117:4:27;632:990:160;;:::i;:::-;;;966:10:30;;10117:4:27;:::i;632:990:160:-;;;;;;-1:-1:-1;;632:990:160;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;-1:-1:-1;632:990:160;;;;;;;-1:-1:-1;632:990:160;;-1:-1:-1;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:160;;;;;;;;-1:-1:-1;;632:990:160;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:990:160;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:990:160;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;632:990:160;;;;;4867:13:27;632:990:160;;;;;;:::o;3405:215:25:-;-1:-1:-1;;;;;632:990:160;3489:22:25;;3485:91;;-1:-1:-1;;;;;;;;;;;632:990:160;;-1:-1:-1;;;;;;632:990:160;;;;;;;-1:-1:-1;;;;;632:990:160;3975:40:25;-1:-1:-1;;3975:40:25;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;632:990:160;;3509:1:25;3534:31;11745:477:27;;;4867:20;;;:::i;:::-;632:990:160;;;;;;;-1:-1:-1;632:990:160;;;;-1:-1:-1;632:990:160;;;;;11910:37:27;;11906:310;;11745:477;;;;;:::o;11906:310::-;11967:24;;;11963:130;;-1:-1:-1;;;;;632:990:160;;11141:19:27;11137:89;;-1:-1:-1;;;;;632:990:160;;11239:21:27;11235:90;;11334:20;;;:::i;:::-;:29;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;-1:-1:-1;632:990:160;;;;;11906:310:27;;;;;;11235:90;11283:31;;;-1:-1:-1;11283:31:27;-1:-1:-1;11283:31:27;632:990:160;;-1:-1:-1;11283:31:27;11137:89;11183:32;;;-1:-1:-1;11183:32:27;-1:-1:-1;11183:32:27;632:990:160;;-1:-1:-1;11183:32:27;11963:130;12018:60;;;;;;-1:-1:-1;12018:60:27;632:990:160;;;;;;12018:60:27;632:990:160;;;;;;-1:-1:-1;12018:60:27;6605:300;-1:-1:-1;;;;;632:990:160;;6688:18:27;;6684:86;;-1:-1:-1;;;;;632:990:160;;6783:16:27;;6779:86;;632:990:160;6704:1:27;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;;6704:1:27;632:990:160;;7609:19:27;;;7605:115;;632:990:160;8358:25:27;632:990:160;;;;6704:1:27;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;;;6704:1:27;632:990:160;;;6704:1:27;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;;6704:1:27;632:990:160;;;;;;;;;;;;8358:25:27;6605:300::o;7605:115::-;7655:50;;;;6704:1;7655:50;;632:990:160;;;;;;6704:1:27;7655:50;6684:86;6729:30;;;6704:1;6729:30;6704:1;6729:30;632:990:160;;6704:1:27;6729:30;2658:162:25;-1:-1:-1;;;;;;;;;;;632:990:160;-1:-1:-1;;;;;632:990:160;966:10:30;2717:23:25;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:25;966:10:30;2763:40:25;632:990:160;;-1:-1:-1;2763:40:25;9259:206:27;;;;-1:-1:-1;;;;;632:990:160;9329:21:27;;9325:89;;632:990:160;9348:1:27;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;;9348:1:27;632:990:160;;7609:19:27;;;7605:115;;632:990:160;;9348:1:27;632:990:160;;8358:25:27;632:990:160;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;8358:25:27;9259:206::o;7605:115::-;7655:50;;;;;9348:1;7655:50;;632:990:160;;;;;;9348:1:27;7655:50;10976:487;;-1:-1:-1;;;;;632:990:160;;;11141:19:27;;11137:89;;-1:-1:-1;;;;;632:990:160;;11239:21:27;;11235:90;;11415:31;11334:20;;632:990:160;11334:20:27;;:::i;:::-;632:990:160;-1:-1:-1;632:990:160;;;;;-1:-1:-1;632:990:160;;;;;;;11415:31:27;10976:487::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;-1:-1:-1;;;;;632:990:160;;;;8358:25:27;;632:990:160;;7918:16:27;632:990:160;;;-1:-1:-1;;;;;;;;;;;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;7914:429:27;632:990:160;;;;;8358:25:27;7220:1170::o;7914:429::-;632:990:160;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;7914:429:27;;632:990:160;;;;;941:9;;;;;632:990;941:9;4130:191:33;4243:17;;:::i;:::-;4262:20;;:::i;:::-;632:990:160;;4221:92:33;;;;632:990:160;2073:95:33;632:990:160;;;2073:95:33;;632:990:160;2073:95:33;;;632:990:160;4284:13:33;2073:95;;;632:990:160;4307:4:33;2073:95;;;632:990:160;2073:95:33;4221:92;;;;;;:::i;:::-;632:990:160;4211:103:33;;4130:191;:::o;7084:141:26:-;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;;;7150:18:26;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:26;;-1:-1:-1;7191:17:26;5140:1530:66;;;6199:66;6186:79;;6182:164;;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;;;;;;;;;;6457:24:66;;;;;;;;;-1:-1:-1;6457:24:66;-1:-1:-1;;;;;632:990:160;;6495:20:66;6491:113;;6614:49;-1:-1:-1;6614:49:66;-1:-1:-1;5140:1530:66;:::o;6491:113::-;6531:62;-1:-1:-1;6531:62:66;6457:24;6531:62;-1:-1:-1;6531:62:66;:::o;6457:24::-;632:990:160;;;-1:-1:-1;632:990:160;;;;;6182:164:66;6281:54;;;6297:1;6281:54;6301:30;6281:54;;:::o;7196:532::-;632:990:160;;;;;;7282:29:66;;;7327:7;;:::o;7278:444::-;632:990:160;7378:38:66;;632:990:160;;7439:23:66;;;7291:20;7439:23;632:990:160;7291:20:66;7439:23;7374:348;7492:35;7483:44;;7492:35;;7550:46;;;;7291:20;7550:46;632:990:160;;;7291:20:66;7550:46;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;;;7291:20;7679:32;632:990:160;;;7291:20:66;7679:32;632:990:160;;;;7291:20:66;632:990:160;;;;;7291:20:66;632:990:160;7058:687:33;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7230:22:33;;;;7275;7268:29;:::o;7226:513::-;-1:-1:-1;;2806:64:33;632:990:160;7603:15:33;;;;7638:17;:::o;7599:130::-;7694:20;7701:13;7694:20;:::o;632:990:160:-;-1:-1:-1;;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;-1:-1:-1;632:990:160;;;;;;;;;;;-1:-1:-1;632:990:160;;7966:723:33;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8147:25:33;;;;8195;8188:32;:::o;8143:540::-;-1:-1:-1;;8507:16:33;632:990:160;8541:18:33;;;;8579:20;:::o;632:990:160:-;-1:-1:-1;;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;-1:-1:-1;632:990:160;;;;;;;;;;;-1:-1:-1;632:990:160;","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.28+commit.7893614a\"},\"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\":\"pure\",\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"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\":\"0x3e0983635bf88ee5284c4385c01431135b7eec294e2f1c0d22bc2dddc16790dd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0302725cd5b1bd6afacebd0d30d445bb1c86152745b6de42dc1a66a570b42718\",\"dweb:/ipfs/QmVCurygXE5PV65uvC12ybtXYpL292PMmEUPnbRtGbAY1V\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"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":"pure","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/","symbiotic-core/=lib/symbiotic-core/"],"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":"0x3e0983635bf88ee5284c4385c01431135b7eec294e2f1c0d22bc2dddc16790dd","urls":["bzz-raw://0302725cd5b1bd6afacebd0d30d445bb1c86152745b6de42dc1a66a570b42718","dweb:/ipfs/QmVCurygXE5PV65uvC12ybtXYpL292PMmEUPnbRtGbAY1V"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/WrappedVara.sol","id":76832,"exportedSymbols":{"ERC20BurnableUpgradeable":[40320],"ERC20PermitUpgradeable":[40489],"ERC20Upgradeable":[40258],"Initializable":[39641],"OwnableUpgradeable":[39387],"WrappedVara":[76831]},"nodeType":"SourceUnit","src":"39:1584:160","nodes":[{"id":76726,"nodeType":"PragmaDirective","src":"39:24:160","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":76728,"nodeType":"ImportDirective","src":"65:96:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":76832,"sourceUnit":39642,"symbolAliases":[{"foreign":{"id":76727,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39641,"src":"73:13:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76730,"nodeType":"ImportDirective","src":"162:102:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":76832,"sourceUnit":40259,"symbolAliases":[{"foreign":{"id":76729,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40258,"src":"170:16:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76732,"nodeType":"ImportDirective","src":"265:133:160","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":76832,"sourceUnit":40321,"symbolAliases":[{"foreign":{"id":76731,"name":"ERC20BurnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40320,"src":"273:24:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76734,"nodeType":"ImportDirective","src":"399:101:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":76832,"sourceUnit":39388,"symbolAliases":[{"foreign":{"id":76733,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39387,"src":"407:18:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76736,"nodeType":"ImportDirective","src":"501:129:160","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":76832,"sourceUnit":40490,"symbolAliases":[{"foreign":{"id":76735,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40489,"src":"509:22:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76831,"nodeType":"ContractDefinition","src":"632:990:160","nodes":[{"id":76749,"nodeType":"VariableDeclaration","src":"784:51:160","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_NAME","nameLocation":"808:10:160","scope":76831,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":76747,"name":"string","nodeType":"ElementaryTypeName","src":"784:6:160","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"577261707065642056617261","id":76748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"821:14:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_985e2e9885ca23de2896caee5fad5adf116e2558361aa44c502ff8b2c1b2a41b","typeString":"literal_string \"Wrapped Vara\""},"value":"Wrapped Vara"},"visibility":"private"},{"id":76752,"nodeType":"VariableDeclaration","src":"841:46:160","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_SYMBOL","nameLocation":"865:12:160","scope":76831,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":76750,"name":"string","nodeType":"ElementaryTypeName","src":"841:6:160","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5756415241","id":76751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"880:7:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_203a7c23d1b412674989fae6808de72f52c6953d49ac548796ba3c05451693a4","typeString":"literal_string \"WVARA\""},"value":"WVARA"},"visibility":"private"},{"id":76755,"nodeType":"VariableDeclaration","src":"893:57:160","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_INITIAL_SUPPLY","nameLocation":"918:20:160","scope":76831,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76753,"name":"uint256","nodeType":"ElementaryTypeName","src":"893:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":76754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"941:9:160","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"visibility":"private"},{"id":76763,"nodeType":"FunctionDefinition","src":"1010:53:160","nodes":[],"body":{"id":76762,"nodeType":"Block","src":"1024:39:160","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76759,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39609,"src":"1034:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":76760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1034:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76761,"nodeType":"ExpressionStatement","src":"1034:22:160"}]},"documentation":{"id":76756,"nodeType":"StructuredDocumentation","src":"957:48:160","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":76757,"nodeType":"ParameterList","parameters":[],"src":"1021:2:160"},"returnParameters":{"id":76758,"nodeType":"ParameterList","parameters":[],"src":"1024:0:160"},"scope":76831,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":76797,"nodeType":"FunctionDefinition","src":"1069:297:160","nodes":[],"body":{"id":76796,"nodeType":"Block","src":"1130:236:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":76771,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76749,"src":"1153:10:160","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":76772,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76752,"src":"1165:12:160","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":76770,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39709,"src":"1140:12:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":76773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1140:38:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76774,"nodeType":"ExpressionStatement","src":"1140:38:160"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76775,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40279,"src":"1188:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":76776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76777,"nodeType":"ExpressionStatement","src":"1188:22:160"},{"expression":{"arguments":[{"id":76779,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76765,"src":"1235:12:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76778,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39247,"src":"1220:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":76780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:28:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76781,"nodeType":"ExpressionStatement","src":"1220:28:160"},{"expression":{"arguments":[{"id":76783,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76749,"src":"1277:10:160","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":76782,"name":"__ERC20Permit_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40376,"src":"1258:18:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":76784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1258:30:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76785,"nodeType":"ExpressionStatement","src":"1258:30:160"},{"expression":{"arguments":[{"id":76787,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76765,"src":"1305:12:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76788,"name":"TOKEN_INITIAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76755,"src":"1319:20:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":76789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1342:2:160","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":76790,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[76815],"referencedDeclaration":76815,"src":"1348:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint8_$","typeString":"function () pure returns (uint8)"}},"id":76791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1348:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1342:16:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1319:39:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76786,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40090,"src":"1299:5:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":76794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1299:60:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76795,"nodeType":"ExpressionStatement","src":"1299:60:160"}]},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":76768,"kind":"modifierInvocation","modifierName":{"id":76767,"name":"initializer","nameLocations":["1118:11:160"],"nodeType":"IdentifierPath","referencedDeclaration":39495,"src":"1118:11:160"},"nodeType":"ModifierInvocation","src":"1118:11:160"}],"name":"initialize","nameLocation":"1078:10:160","parameters":{"id":76766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76765,"mutability":"mutable","name":"initialOwner","nameLocation":"1097:12:160","nodeType":"VariableDeclaration","scope":76797,"src":"1089:20:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76764,"name":"address","nodeType":"ElementaryTypeName","src":"1089:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1088:22:160"},"returnParameters":{"id":76769,"nodeType":"ParameterList","parameters":[],"src":"1130:0:160"},"scope":76831,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":76806,"nodeType":"FunctionDefinition","src":"1372:60:160","nodes":[],"body":{"id":76805,"nodeType":"Block","src":"1430:2:160","nodes":[],"statements":[]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":76800,"kind":"modifierInvocation","modifierName":{"id":76799,"name":"onlyOwner","nameLocations":["1403:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":39282,"src":"1403:9:160"},"nodeType":"ModifierInvocation","src":"1403:9:160"},{"arguments":[{"hexValue":"32","id":76802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1427:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":76803,"kind":"modifierInvocation","modifierName":{"id":76801,"name":"reinitializer","nameLocations":["1413:13:160"],"nodeType":"IdentifierPath","referencedDeclaration":39542,"src":"1413:13:160"},"nodeType":"ModifierInvocation","src":"1413:16:160"}],"name":"reinitialize","nameLocation":"1381:12:160","parameters":{"id":76798,"nodeType":"ParameterList","parameters":[],"src":"1393:2:160"},"returnParameters":{"id":76804,"nodeType":"ParameterList","parameters":[],"src":"1430:0:160"},"scope":76831,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":76815,"nodeType":"FunctionDefinition","src":"1438:83:160","nodes":[],"body":{"id":76814,"nodeType":"Block","src":"1495:26:160","nodes":[],"statements":[{"expression":{"hexValue":"3132","id":76812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1512:2:160","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"functionReturnParameters":76811,"id":76813,"nodeType":"Return","src":"1505:9:160"}]},"baseFunctions":[39778],"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"1447:8:160","overrides":{"id":76808,"nodeType":"OverrideSpecifier","overrides":[],"src":"1470:8:160"},"parameters":{"id":76807,"nodeType":"ParameterList","parameters":[],"src":"1455:2:160"},"returnParameters":{"id":76811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76810,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76815,"src":"1488:5:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":76809,"name":"uint8","nodeType":"ElementaryTypeName","src":"1488:5:160","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1487:7:160"},"scope":76831,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":76830,"nodeType":"FunctionDefinition","src":"1527:93:160","nodes":[],"body":{"id":76829,"nodeType":"Block","src":"1586:34:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":76825,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76817,"src":"1602:2:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76826,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76819,"src":"1606:6:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76824,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40090,"src":"1596:5:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":76827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1596:17:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76828,"nodeType":"ExpressionStatement","src":"1596:17:160"}]},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":76822,"kind":"modifierInvocation","modifierName":{"id":76821,"name":"onlyOwner","nameLocations":["1576:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":39282,"src":"1576:9:160"},"nodeType":"ModifierInvocation","src":"1576:9:160"}],"name":"mint","nameLocation":"1536:4:160","parameters":{"id":76820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76817,"mutability":"mutable","name":"to","nameLocation":"1549:2:160","nodeType":"VariableDeclaration","scope":76830,"src":"1541:10:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76816,"name":"address","nodeType":"ElementaryTypeName","src":"1541:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76819,"mutability":"mutable","name":"amount","nameLocation":"1561:6:160","nodeType":"VariableDeclaration","scope":76830,"src":"1553:14:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76818,"name":"uint256","nodeType":"ElementaryTypeName","src":"1553:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1540:28:160"},"returnParameters":{"id":76823,"nodeType":"ParameterList","parameters":[],"src":"1586:0:160"},"scope":76831,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":76737,"name":"Initializable","nameLocations":["660:13:160"],"nodeType":"IdentifierPath","referencedDeclaration":39641,"src":"660:13:160"},"id":76738,"nodeType":"InheritanceSpecifier","src":"660:13:160"},{"baseName":{"id":76739,"name":"ERC20Upgradeable","nameLocations":["679:16:160"],"nodeType":"IdentifierPath","referencedDeclaration":40258,"src":"679:16:160"},"id":76740,"nodeType":"InheritanceSpecifier","src":"679:16:160"},{"baseName":{"id":76741,"name":"ERC20BurnableUpgradeable","nameLocations":["701:24:160"],"nodeType":"IdentifierPath","referencedDeclaration":40320,"src":"701:24:160"},"id":76742,"nodeType":"InheritanceSpecifier","src":"701:24:160"},{"baseName":{"id":76743,"name":"OwnableUpgradeable","nameLocations":["731:18:160"],"nodeType":"IdentifierPath","referencedDeclaration":39387,"src":"731:18:160"},"id":76744,"nodeType":"InheritanceSpecifier","src":"731:18:160"},{"baseName":{"id":76745,"name":"ERC20PermitUpgradeable","nameLocations":["755:22:160"],"nodeType":"IdentifierPath","referencedDeclaration":40489,"src":"755:22:160"},"id":76746,"nodeType":"InheritanceSpecifier","src":"755:22:160"}],"canonicalName":"WrappedVara","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[76831,40489,40646,41119,41540,43202,39387,40320,40258,41582,43166,43140,40535,39641],"name":"WrappedVara","nameLocation":"641:11:160","scope":76832,"usedErrors":[39223,39228,39404,39407,40355,40362,40549,41552,41557,41562,41571,41576,41581,44912,44917,44922],"usedEvents":[39234,39412,41520,43074,43083]}],"license":"UNLICENSED"},"id":160} \ 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":"pure"},{"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":"0x6080806040523460aa575f516020611d6d5f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b604051611cbe90816100af8239f35b6001600160401b0319166001600160401b039081175f516020611d6d5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120d578063095ea7b3146111e757806318160ddd146111be57806323b872dd14611186578063313ce5671461116b5780633644e5151461114957806340c10f191461110c57806342966c68146110ef5780636c2eb3501461105557806370a0823114611011578063715018a614610faa57806379cc679014610f7a5780637ecebe0014610f2457806384b0196e14610c505780638da5cb5b14610c1c57806395d89b4114610b22578063a9059cbb14610af1578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112ee565b6101246115b2565b6113ac565b005b5f80fd5b3461012b57604036600319011261012b576101486112ee565b610159610153611304565b91611374565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112ee565b610197611304565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611352565b5190206102636117c0565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611852565b909291926118df565b6001600160a01b03168481036102ae5750610129935061169b565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112ee565b5f516020611c695f395f51905f52549060ff8260401c16159167ffffffffffffffff811680159081610ae9575b6001149081610adf575b159081610ad6575b50610ac75767ffffffffffffffff1981166001175f516020611c695f395f51905f525582610a9b575b5060405191610369604084611352565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611352565b6005835264575641524160d81b60208401526103ab611827565b6103b3611827565b835167ffffffffffffffff81116107a8576103db5f516020611b895f395f51905f525461131a565b601f8111610a2c575b50602094601f82116001146109b1579481929394955f926109a6575b50508160011b915f199060031b1c1916175f516020611b895f395f51905f52555b825167ffffffffffffffff81116107a8576104495f516020611be95f395f51905f525461131a565b601f8111610937575b506020601f82116001146108bc57819293945f926108b1575b50508160011b915f199060031b1c1916175f516020611be95f395f51905f52555b610494611827565b61049c611827565b6104a4611827565b6104ad816113ac565b604051916104bc604084611352565b600c83526b57726170706564205661726160a01b60208401526104dd611827565b604051916104ec604084611352565b60018352603160f81b6020840152610502611827565b835167ffffffffffffffff81116107a85761052a5f516020611bc95f395f51905f525461131a565b601f8111610842575b50602094601f82116001146107c7579481929394955f926107bc575b50508160011b915f199060031b1c1916175f516020611bc95f395f51905f52555b825167ffffffffffffffff81116107a8576105985f516020611c495f395f51905f525461131a565b601f8111610739575b506020601f82116001146106be57819293945f926106b3575b50508160011b915f199060031b1c1916175f516020611c495f395f51905f52555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a057670de0b6b3a7640000610643916116fe565b61064957005b68ff0000000000000000195f516020611c695f395f51905f5254165f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f516020611c495f395f51905f525f52805f20915f5b81811061072157509583600195969710610709575b505050811b015f516020611c495f395f51905f52556105db565b01515f1960f88460031b161c191690558480806106ef565b9192602060018192868b0151815501940192016106da565b5f516020611c495f395f51905f525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c8101916020841061079e575b601f0160051c01905b81811061079357506105a1565b5f8155600101610786565b909150819061077d565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f516020611bc95f395f51905f525f52805f20915f5b88811061082a57508360019596979810610812575b505050811b015f516020611bc95f395f51905f5255610570565b01515f1960f88460031b161c191690558580806107f8565b919260206001819286850151815501940192016107e3565b5f516020611bc95f395f51905f525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a7575b601f0160051c01905b81811061089c5750610533565b5f815560010161088f565b9091508190610886565b01519050848061046b565b601f198216905f516020611be95f395f51905f525f52805f20915f5b81811061091f57509583600195969710610907575b505050811b015f516020611be95f395f51905f525561048c565b01515f1960f88460031b161c191690558480806108ed565b9192602060018192868b0151815501940192016108d8565b5f516020611be95f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099c575b601f0160051c01905b8181106109915750610452565b5f8155600101610984565b909150819061097b565b015190508580610400565b601f198216955f516020611b895f395f51905f525f52805f20915f5b888110610a14575083600195969798106109fc575b505050811b015f516020611b895f395f51905f5255610421565b01515f1960f88460031b161c191690558580806109e2565b919260206001819286850151815501940192016109cd565b5f516020611b895f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a91575b601f0160051c01905b818110610a8657506103e4565b5f8155600101610a79565b9091508190610a70565b68ffffffffffffffffff191668010000000000000001175f516020611c695f395f51905f525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b17610b0d6112ee565b60243590336114e1565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f516020611be95f395f51905f5254610b4e8161131a565b8084529060018116908115610bf85750600114610b8e575b610b8a83610b7681850382611352565b6040519182916020835260208301906112ca565b0390f35b5f516020611be95f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610bde57509091508101602001610b76610b66565b919260018160209254838588010152019101909291610bc6565b60ff191660208086019190915291151560051b84019091019150610b769050610b66565b3461012b575f36600319011261012b575f516020611c095f395f51905f52546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efb575b15610ebe576040515f516020611bc95f395f51905f5254815f610cab8361131a565b8083529260018116908115610e9f5750600114610e34575b610ccf92500382611352565b6040515f516020611c495f395f51905f5254815f610cec8361131a565b8083529260018116908115610e155750600114610daa575b610d1791925092610d4e94930382611352565b6020610d5c60405192610d2a8385611352565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112ca565b9085820360408701526112ca565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9357505050500390f35b835185528695509381019392810192600101610d84565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610df9575050906020610d1792820101610d04565b6020919350806001915483858801015201910190918392610de1565b60209250610d1794915060ff191682840152151560051b820101610d04565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e83575050906020610ccf92820101610cc3565b6020919350806001915483858801015201910190918392610e6b565b60209250610ccf94915060ff191682840152151560051b820101610cc3565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c89565b3461012b57602036600319011261012b57610f3d6112ee565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f966112ee565b60243590610fa582338361141d565b6115e5565b3461012b575f36600319011261012b57610fc26115b2565b5f516020611c095f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110326112ee565b165f525f516020611ba95f395f51905f52602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106d6115b2565b5f516020611c695f395f51905f525460ff8160401c1680156110da575b610ac75760029068ffffffffffffffffff1916175f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108a565b3461012b57602036600319011261012b57610129600435336115e5565b3461012b57604036600319011261012b576111256112ee565b61112d6115b2565b6001600160a01b038116156106a05761012990602435906116fe565b3461012b575f36600319011261012b5760206111636117c0565b604051908152f35b3461012b575f36600319011261012b576020604051600c8152f35b3461012b57606036600319011261012b57610b176111a26112ee565b6111aa611304565b604435916111b983338361141d565b6114e1565b3461012b575f36600319011261012b5760205f516020611c295f395f51905f5254604051908152f35b3461012b57604036600319011261012b57610b176112036112ee565b602435903361169b565b3461012b575f36600319011261012b576040515f5f516020611b895f395f51905f52546112398161131a565b8084529060018116908115610bf8575060011461126057610b8a83610b7681850382611352565b5f516020611b895f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b057509091508101602001610b76610b66565b919260018160209254838588010152019101909291611298565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c92168015611348575b602083101461133457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611329565b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140a575f516020611c095f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142883611374565b60018060a01b0382165f5260205260405f2054925f19840361144b575b50505050565b8284106114be576001600160a01b038116156114ab576001600160a01b038216156114985761147990611374565b9060018060a01b03165f5260205260405f20910390555f808080611445565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b031690811561159f576001600160a01b03169182156106a057815f525f516020611ba95f395f51905f5260205260405f205481811061158657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f516020611ba95f395f51905f5284520360405f2055845f525f516020611ba95f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f516020611c095f395f51905f52546001600160a01b031633036115d257565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b0316801561159f57805f525f516020611ba95f395f51905f5260205260405f2054838110611681576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f516020611ba95f395f51905f528452036040862055805f516020611c295f395f51905f5254035f516020611c295f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ab576001600160a01b0316928315611498577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ea602092611374565b855f5282528060405f2055604051908152a3565b5f516020611c295f395f51905f5254908282018092116117ac575f516020611c295f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178a57805f516020611c295f395f51905f5254035f516020611c295f395f51905f52555b604051908152a3565b8484525f516020611ba95f395f51905f52825260408420818154019055611781565b634e487b7160e01b5f52601160045260245ffd5b6117c8611953565b6117d0611a80565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182160c082611352565b51902090565b60ff5f516020611c695f395f51905f525460401c161561184357565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118c9575f516001600160a01b038116156118bf57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561193f57806118f1575050565b600181036119085763f645eedf60e01b5f5260045ffd5b60028103611923575063fce698f760e01b5f5260045260245ffd5b60031461192d5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f516020611bc95f395f51905f5254905f816119718461131a565b9182825260208201946001811690815f14611a6457506001146119f9575b61199b92500382611352565b519081156119a7572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d45790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4857505090602061199b9282010161198f565b6020919350806001915483858801015201910190918392611a30565b60ff191686525061199b92151560051b8201602001905061198f565b6040515f516020611c495f395f51905f5254905f81611a9e8461131a565b9182825260208201946001811690815f14611b6c5750600114611b01575b611ac892500382611352565b51908115611ad4572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d45790565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b50575050906020611ac892820101611abc565b6020919350806001915483858801015201910190918392611b38565b60ff1916865250611ac892151560051b82016020019050611abc56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220d08a572a49deef0fe43c12723c823f7d35f0880c0978a58045ae35f94b3d290a64736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"632:990:121:-:0;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;7896:76:25;;-1:-1:-1;;;;;;;;;;;632:990:121;;7985:34:25;7981:146;;-1:-1:-1;632:990:121;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;632:990:121;-1:-1:-1;;;;;632:990:121;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;8087:29:25;;632:990:121;;8087:29:25;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:25;;-1:-1:-1;7938:23:25;632:990:121;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120d578063095ea7b3146111e757806318160ddd146111be57806323b872dd14611186578063313ce5671461116b5780633644e5151461114957806340c10f191461110c57806342966c68146110ef5780636c2eb3501461105557806370a0823114611011578063715018a614610faa57806379cc679014610f7a5780637ecebe0014610f2457806384b0196e14610c505780638da5cb5b14610c1c57806395d89b4114610b22578063a9059cbb14610af1578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112ee565b6101246115b2565b6113ac565b005b5f80fd5b3461012b57604036600319011261012b576101486112ee565b610159610153611304565b91611374565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112ee565b610197611304565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611352565b5190206102636117c0565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611852565b909291926118df565b6001600160a01b03168481036102ae5750610129935061169b565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112ee565b5f516020611c695f395f51905f52549060ff8260401c16159167ffffffffffffffff811680159081610ae9575b6001149081610adf575b159081610ad6575b50610ac75767ffffffffffffffff1981166001175f516020611c695f395f51905f525582610a9b575b5060405191610369604084611352565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611352565b6005835264575641524160d81b60208401526103ab611827565b6103b3611827565b835167ffffffffffffffff81116107a8576103db5f516020611b895f395f51905f525461131a565b601f8111610a2c575b50602094601f82116001146109b1579481929394955f926109a6575b50508160011b915f199060031b1c1916175f516020611b895f395f51905f52555b825167ffffffffffffffff81116107a8576104495f516020611be95f395f51905f525461131a565b601f8111610937575b506020601f82116001146108bc57819293945f926108b1575b50508160011b915f199060031b1c1916175f516020611be95f395f51905f52555b610494611827565b61049c611827565b6104a4611827565b6104ad816113ac565b604051916104bc604084611352565b600c83526b57726170706564205661726160a01b60208401526104dd611827565b604051916104ec604084611352565b60018352603160f81b6020840152610502611827565b835167ffffffffffffffff81116107a85761052a5f516020611bc95f395f51905f525461131a565b601f8111610842575b50602094601f82116001146107c7579481929394955f926107bc575b50508160011b915f199060031b1c1916175f516020611bc95f395f51905f52555b825167ffffffffffffffff81116107a8576105985f516020611c495f395f51905f525461131a565b601f8111610739575b506020601f82116001146106be57819293945f926106b3575b50508160011b915f199060031b1c1916175f516020611c495f395f51905f52555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a057670de0b6b3a7640000610643916116fe565b61064957005b68ff0000000000000000195f516020611c695f395f51905f5254165f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f516020611c495f395f51905f525f52805f20915f5b81811061072157509583600195969710610709575b505050811b015f516020611c495f395f51905f52556105db565b01515f1960f88460031b161c191690558480806106ef565b9192602060018192868b0151815501940192016106da565b5f516020611c495f395f51905f525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c8101916020841061079e575b601f0160051c01905b81811061079357506105a1565b5f8155600101610786565b909150819061077d565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f516020611bc95f395f51905f525f52805f20915f5b88811061082a57508360019596979810610812575b505050811b015f516020611bc95f395f51905f5255610570565b01515f1960f88460031b161c191690558580806107f8565b919260206001819286850151815501940192016107e3565b5f516020611bc95f395f51905f525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a7575b601f0160051c01905b81811061089c5750610533565b5f815560010161088f565b9091508190610886565b01519050848061046b565b601f198216905f516020611be95f395f51905f525f52805f20915f5b81811061091f57509583600195969710610907575b505050811b015f516020611be95f395f51905f525561048c565b01515f1960f88460031b161c191690558480806108ed565b9192602060018192868b0151815501940192016108d8565b5f516020611be95f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099c575b601f0160051c01905b8181106109915750610452565b5f8155600101610984565b909150819061097b565b015190508580610400565b601f198216955f516020611b895f395f51905f525f52805f20915f5b888110610a14575083600195969798106109fc575b505050811b015f516020611b895f395f51905f5255610421565b01515f1960f88460031b161c191690558580806109e2565b919260206001819286850151815501940192016109cd565b5f516020611b895f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a91575b601f0160051c01905b818110610a8657506103e4565b5f8155600101610a79565b9091508190610a70565b68ffffffffffffffffff191668010000000000000001175f516020611c695f395f51905f525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b17610b0d6112ee565b60243590336114e1565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f516020611be95f395f51905f5254610b4e8161131a565b8084529060018116908115610bf85750600114610b8e575b610b8a83610b7681850382611352565b6040519182916020835260208301906112ca565b0390f35b5f516020611be95f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610bde57509091508101602001610b76610b66565b919260018160209254838588010152019101909291610bc6565b60ff191660208086019190915291151560051b84019091019150610b769050610b66565b3461012b575f36600319011261012b575f516020611c095f395f51905f52546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efb575b15610ebe576040515f516020611bc95f395f51905f5254815f610cab8361131a565b8083529260018116908115610e9f5750600114610e34575b610ccf92500382611352565b6040515f516020611c495f395f51905f5254815f610cec8361131a565b8083529260018116908115610e155750600114610daa575b610d1791925092610d4e94930382611352565b6020610d5c60405192610d2a8385611352565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112ca565b9085820360408701526112ca565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9357505050500390f35b835185528695509381019392810192600101610d84565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610df9575050906020610d1792820101610d04565b6020919350806001915483858801015201910190918392610de1565b60209250610d1794915060ff191682840152151560051b820101610d04565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e83575050906020610ccf92820101610cc3565b6020919350806001915483858801015201910190918392610e6b565b60209250610ccf94915060ff191682840152151560051b820101610cc3565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c89565b3461012b57602036600319011261012b57610f3d6112ee565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f966112ee565b60243590610fa582338361141d565b6115e5565b3461012b575f36600319011261012b57610fc26115b2565b5f516020611c095f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110326112ee565b165f525f516020611ba95f395f51905f52602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106d6115b2565b5f516020611c695f395f51905f525460ff8160401c1680156110da575b610ac75760029068ffffffffffffffffff1916175f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108a565b3461012b57602036600319011261012b57610129600435336115e5565b3461012b57604036600319011261012b576111256112ee565b61112d6115b2565b6001600160a01b038116156106a05761012990602435906116fe565b3461012b575f36600319011261012b5760206111636117c0565b604051908152f35b3461012b575f36600319011261012b576020604051600c8152f35b3461012b57606036600319011261012b57610b176111a26112ee565b6111aa611304565b604435916111b983338361141d565b6114e1565b3461012b575f36600319011261012b5760205f516020611c295f395f51905f5254604051908152f35b3461012b57604036600319011261012b57610b176112036112ee565b602435903361169b565b3461012b575f36600319011261012b576040515f5f516020611b895f395f51905f52546112398161131a565b8084529060018116908115610bf8575060011461126057610b8a83610b7681850382611352565b5f516020611b895f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b057509091508101602001610b76610b66565b919260018160209254838588010152019101909291611298565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c92168015611348575b602083101461133457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611329565b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140a575f516020611c095f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142883611374565b60018060a01b0382165f5260205260405f2054925f19840361144b575b50505050565b8284106114be576001600160a01b038116156114ab576001600160a01b038216156114985761147990611374565b9060018060a01b03165f5260205260405f20910390555f808080611445565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b031690811561159f576001600160a01b03169182156106a057815f525f516020611ba95f395f51905f5260205260405f205481811061158657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f516020611ba95f395f51905f5284520360405f2055845f525f516020611ba95f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f516020611c095f395f51905f52546001600160a01b031633036115d257565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b0316801561159f57805f525f516020611ba95f395f51905f5260205260405f2054838110611681576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f516020611ba95f395f51905f528452036040862055805f516020611c295f395f51905f5254035f516020611c295f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ab576001600160a01b0316928315611498577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ea602092611374565b855f5282528060405f2055604051908152a3565b5f516020611c295f395f51905f5254908282018092116117ac575f516020611c295f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178a57805f516020611c295f395f51905f5254035f516020611c295f395f51905f52555b604051908152a3565b8484525f516020611ba95f395f51905f52825260408420818154019055611781565b634e487b7160e01b5f52601160045260245ffd5b6117c8611953565b6117d0611a80565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182160c082611352565b51902090565b60ff5f516020611c695f395f51905f525460401c161561184357565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118c9575f516001600160a01b038116156118bf57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561193f57806118f1575050565b600181036119085763f645eedf60e01b5f5260045ffd5b60028103611923575063fce698f760e01b5f5260045260245ffd5b60031461192d5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f516020611bc95f395f51905f5254905f816119718461131a565b9182825260208201946001811690815f14611a6457506001146119f9575b61199b92500382611352565b519081156119a7572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d45790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4857505090602061199b9282010161198f565b6020919350806001915483858801015201910190918392611a30565b60ff191686525061199b92151560051b8201602001905061198f565b6040515f516020611c495f395f51905f5254905f81611a9e8461131a565b9182825260208201946001811690815f14611b6c5750600114611b01575b611ac892500382611352565b51908115611ad4572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d45790565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b50575050906020611ac892820101611abc565b6020919350806001915483858801015201910190918392611b38565b60ff1916865250611ac892151560051b82016020019050611abc56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220d08a572a49deef0fe43c12723c823f7d35f0880c0978a58045ae35f94b3d290a64736f6c634300081c0033","sourceMap":"632:990:121:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;2357:1:24;632:990:121;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;:::-;632:990:121;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;;;:::i;:::-;4867:20:26;632:990:121;;:::i;:::-;4867:20:26;;:::i;:::-;:29;632:990:121;;;;;;-1:-1:-1;632:990:121;;;;;-1:-1:-1;632:990:121;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;2301:15:28;;:26;2297:97;;7051:25:58;7105:8;632:990:121;;;;;;;;;;;;972:64:30;632:990:121;;;;;;;;;;;;;;;;2435:78:28;632:990:121;2435:78:28;;632:990:121;1279:95:28;632:990:121;;1279:95:28;632:990:121;1279:95:28;;632:990:121;;;;;;;;;1279:95:28;;632:990:121;1279:95:28;632:990:121;1279:95:28;;632:990:121;;1279:95:28;;632:990:121;;1279:95:28;;632:990:121;;2435:78:28;;;632:990:121;2435:78:28;;:::i;:::-;632:990:121;2425:89:28;;4094:23:31;;:::i;:::-;3445:249:59;632:990:121;3445:249:59;;-1:-1:-1;;;3445:249:59;;;;;;;;;;632:990:121;;;3445:249:59;632:990:121;;3445:249:59;;7051:25:58;:::i;:::-;7105:8;;;;;:::i;:::-;-1:-1:-1;;;;;632:990:121;2638:15:28;;;2634:88;;10117:4:26;;;;;:::i;2634:88:28:-;2676:35;;;;;632:990:121;2676:35:28;632:990:121;;;;;;2676:35:28;2297:97;2350:33;;;;632:990:121;2350:33:28;632:990:121;;;;2350:33:28;632:990:121;;;;;;-1:-1:-1;;632:990:121;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;4301:16:25;632:990:121;;;;4726:16:25;;:34;;;;632:990:121;4805:1:25;4790:16;:50;;;;632:990:121;4855:13:25;:30;;;;632:990:121;4851:91:25;;;-1:-1:-1;;632:990:121;;4805:1:25;632:990:121;-1:-1:-1;;;;;;;;;;;632:990:121;;4979:67:25;;632:990:121;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:990:121;;;;;;;;;;;:::i;:::-;821:14;632:990;;-1:-1:-1;;;632:990:121;821:14;;;6893:76:25;;:::i;:::-;;;:::i;:::-;632:990:121;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;2600:7:26;632:990:121;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;2600:7:26;632:990:121;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;6893:76:25;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6961:1;;;:::i;:::-;632:990:121;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:990:121;;;;6893:76:25;;:::i;:::-;632:990:121;;;;;;;:::i;:::-;4805:1:25;632:990:121;;-1:-1:-1;;;632:990:121;;;;6893:76:25;;:::i;:::-;632:990:121;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;2600:7:26;632:990:121;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;2600:7:26;632:990:121;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;2806:64:31;632:990:121;;;3902:16:31;632:990:121;-1:-1:-1;;;;;632:990:121;;8803:21:26;8799:91;;941:9:121;8928:5:26;;;:::i;:::-;5066:101:25;;632:990:121;5066:101:25;632:990:121;;-1:-1:-1;;;;;;;;;;;632:990:121;;-1:-1:-1;;;;;;;;;;;632:990:121;5142:14:25;632:990:121;;;4805:1:25;632:990:121;;5142:14:25;632:990:121;8799:91:26;8847:32;;;632:990:121;8847:32:26;632:990:121;;;;;8847:32:26;632:990:121;;;;-1:-1:-1;632:990:121;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;2600:7:26;632:990:121;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;-1:-1:-1;632:990:121;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:121;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;2600:7:26;632:990:121;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;-1:-1:-1;632:990:121;;;;;;;;-1:-1:-1;632:990:121;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;2600:7:26;632:990:121;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;-1:-1:-1;632:990:121;;;;;;;;-1:-1:-1;632:990:121;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;2600:7:26;632:990:121;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;-1:-1:-1;632:990:121;;;;4979:67:25;-1:-1:-1;;632:990:121;;;-1:-1:-1;;;;;;;;;;;632:990:121;4979:67:25;;;4851:91;6498:23;;;632:990:121;4908:23:25;632:990:121;;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:990:121;;;;;;-1:-1:-1;;632:990:121;;;;4616:5:26;632:990:121;;:::i;:::-;;;966:10:29;;4616:5:26;:::i;:::-;632:990:121;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;-1:-1:-1;632:990:121;;;;;;;-1:-1:-1;632:990:121;;-1:-1:-1;632:990:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:121;;-1:-1:-1;632:990:121;;;;;;;;-1:-1:-1;;632:990:121;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;-1:-1:-1;;;;;632:990:121;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;2806:64:31;632:990:121;5777:18:31;:43;;;632:990:121;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5965:13:31;632:990:121;;;;6000:4:31;632:990:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:121;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:990:121;;;;;;;;;;;;-1:-1:-1;;;632:990:121;;;;;;;5777:43:31;632:990:121;5799:16:31;632:990:121;5799:21:31;5777:43;;632:990:121;;;;;;-1:-1:-1;;632:990:121;;;;;;:::i;:::-;;;;;;;;;972:64:30;632:990:121;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;1479:5:27;632:990:121;;:::i;:::-;;;966:10:29;1448:5:27;966:10:29;;1448:5:27;;:::i;:::-;1479;:::i;632:990:121:-;;;;;;-1:-1:-1;;632:990:121;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:121;;-1:-1:-1;;;;;;632:990:121;;;;;;;-1:-1:-1;;;;;632:990:121;3975:40:24;632:990:121;;3975:40:24;632:990:121;;;;;;;-1:-1:-1;;632:990:121;;;;-1:-1:-1;;;;;632:990:121;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;6431:44:25;;;;632:990:121;6427:105:25;;1427:1:121;632:990;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;6656:20:25;632:990:121;;;1427:1;632:990;;6656:20:25;632:990:121;6431:44:25;632:990:121;1427:1;632:990;;;6450:25:25;;6431:44;;632:990:121;;;;;;-1:-1:-1;;632:990:121;;;;1005:5:27;632:990:121;;966:10:29;1005:5:27;:::i;632:990:121:-;;;;;;-1:-1:-1;;632:990:121;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;632:990:121;;8803:21:26;8799:91;;8928:5;632:990:121;;;8928:5:26;;:::i;632:990:121:-;;;;;;-1:-1:-1;;632:990:121;;;;;4094:23:31;;:::i;:::-;632:990:121;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;;;;1512:2;632:990;;;;;;;;;-1:-1:-1;;632:990:121;;;;6198:5:26;632:990:121;;:::i;:::-;;;:::i;:::-;;;966:10:29;6162:5:26;966:10:29;;6162:5:26;;:::i;:::-;6198;:::i;632:990:121:-;;;;;;-1:-1:-1;;632:990:121;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;10117:4:26;632:990:121;;:::i;:::-;;;966:10:29;;10117:4:26;:::i;632:990:121:-;;;;;;-1:-1:-1;;632:990:121;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;-1:-1:-1;632:990:121;;;;;;;-1:-1:-1;632:990:121;;-1:-1:-1;632:990:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:121;;;;;;;;-1:-1:-1;;632:990:121;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:990:121;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:990:121;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;632:990:121;;;;;4867:13:26;632:990:121;;;;;;:::o;3405:215:24:-;-1:-1:-1;;;;;632:990:121;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;632:990:121;;-1:-1:-1;;;;;;632:990:121;;;;;;;-1:-1:-1;;;;;632:990:121;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:990:121;;3509:1:24;3534:31;11745:477:26;;;4867:20;;;:::i;:::-;632:990:121;;;;;;;-1:-1:-1;632:990:121;;;;-1:-1:-1;632:990:121;;;;;11910:37:26;;11906:310;;11745:477;;;;;:::o;11906:310::-;11967:24;;;11963:130;;-1:-1:-1;;;;;632:990:121;;11141:19:26;11137:89;;-1:-1:-1;;;;;632:990:121;;11239:21:26;11235:90;;11334:20;;;:::i;:::-;:29;632:990:121;;;;;;-1:-1:-1;632:990:121;;;;-1:-1:-1;632:990:121;;;;;11906:310:26;;;;;;11235:90;11283:31;;;-1:-1:-1;11283:31:26;-1:-1:-1;11283:31:26;632:990:121;;-1:-1:-1;11283:31:26;11137:89;11183:32;;;-1:-1:-1;11183:32:26;-1:-1:-1;11183:32:26;632:990:121;;-1:-1:-1;11183:32:26;11963:130;12018:60;;;;;;-1:-1:-1;12018:60:26;632:990:121;;;;;;12018:60:26;632:990:121;;;;;;-1:-1:-1;12018:60:26;6605:300;-1:-1:-1;;;;;632:990:121;;6688:18:26;;6684:86;;-1:-1:-1;;;;;632:990:121;;6783:16:26;;6779:86;;632:990:121;6704:1:26;632:990:121;-1:-1:-1;;;;;;;;;;;632:990:121;;;6704:1:26;632:990:121;;7609:19:26;;;7605:115;;632:990:121;8358:25:26;632:990:121;;;;6704:1:26;632:990:121;-1:-1:-1;;;;;;;;;;;632:990:121;;;;6704:1:26;632:990:121;;;6704:1:26;632:990:121;-1:-1:-1;;;;;;;;;;;632:990:121;;;6704:1:26;632:990:121;;;;;;;;;;;;8358:25:26;6605:300::o;7605:115::-;7655:50;;;;6704:1;7655:50;;632:990:121;;;;;;6704:1:26;7655:50;6684:86;6729:30;;;6704:1;6729:30;6704:1;6729:30;632:990:121;;6704:1:26;6729:30;2658:162:24;-1:-1:-1;;;;;;;;;;;632:990:121;-1:-1:-1;;;;;632:990:121;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:990:121;;-1:-1:-1;2763:40:24;9259:206:26;;;;-1:-1:-1;;;;;632:990:121;9329:21:26;;9325:89;;632:990:121;9348:1:26;632:990:121;-1:-1:-1;;;;;;;;;;;632:990:121;;;9348:1:26;632:990:121;;7609:19:26;;;7605:115;;632:990:121;;9348:1:26;632:990:121;;8358:25:26;632:990:121;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;8358:25:26;9259:206::o;7605:115::-;7655:50;;;;;9348:1;7655:50;;632:990:121;;;;;;9348:1:26;7655:50;10976:487;;-1:-1:-1;;;;;632:990:121;;;11141:19:26;;11137:89;;-1:-1:-1;;;;;632:990:121;;11239:21:26;;11235:90;;11415:31;11334:20;;632:990:121;11334:20:26;;:::i;:::-;632:990:121;-1:-1:-1;632:990:121;;;;;-1:-1:-1;632:990:121;;;;;;;11415:31:26;10976:487::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;-1:-1:-1;;;;;632:990:121;;;;8358:25:26;;632:990:121;;7918:16:26;632:990:121;;;-1:-1:-1;;;;;;;;;;;632:990:121;;-1:-1:-1;;;;;;;;;;;632:990:121;7914:429:26;632:990:121;;;;;8358:25:26;7220:1170::o;7914:429::-;632:990:121;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;;7914:429:26;;632:990:121;;;;;941:9;;;;;632:990;941:9;4130:191:31;4243:17;;:::i;:::-;4262:20;;:::i;:::-;632:990:121;;4221:92:31;;;;632:990:121;2073:95:31;632:990:121;;;2073:95:31;;632:990:121;2073:95:31;;;632:990:121;4284:13:31;2073:95;;;632:990:121;4307:4:31;2073:95;;;632:990:121;2073:95:31;4221:92;;;;;;:::i;:::-;632:990:121;4211:103:31;;4130:191;:::o;7084:141:25:-;632:990:121;-1:-1:-1;;;;;;;;;;;632:990:121;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:25;;-1:-1:-1;7191:17:25;5203:1551:58;;;6283:66;6270:79;;6266:164;;632:990:121;;;;;;-1:-1:-1;632:990:121;;;;;;;;;;;;;;;;;;;6541:24:58;;;;;;;;;-1:-1:-1;6541:24:58;-1:-1:-1;;;;;632:990:121;;6579:20:58;6575:113;;6698:49;-1:-1:-1;6698:49:58;-1:-1:-1;5203:1551:58;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:58;6541:24;6615:62;-1:-1:-1;6615:62:58;:::o;6541:24::-;632:990:121;;;-1:-1:-1;632:990:121;;;;;6266:164:58;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o;7280:532::-;632:990:121;;;;;;7366:29:58;;;7411:7;;:::o;7362:444::-;632:990:121;7462:38:58;;632:990:121;;7523:23:58;;;7375:20;7523:23;632:990:121;7375:20:58;7523:23;7458:348;7576:35;7567:44;;7576:35;;7634:46;;;;7375:20;7634:46;632:990:121;;;7375:20:58;7634:46;7563:243;7710:30;7701:39;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;;;7375:20;7763:32;632:990:121;;;7375:20:58;7763:32;632:990:121;;;;7375:20:58;632:990:121;;;;;7375:20:58;632:990:121;7058:687:31;632:990:121;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7230:22:31;;;;7275;7268:29;:::o;7226:513::-;-1:-1:-1;;2806:64:31;632:990:121;7603:15:31;;;;7638:17;:::o;7599:130::-;7694:20;7701:13;7694:20;:::o;632:990:121:-;-1:-1:-1;;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;-1:-1:-1;632:990:121;;;;;;;;;;;-1:-1:-1;632:990:121;;7966:723:31;632:990:121;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8147:25:31;;;;8195;8188:32;:::o;8143:540::-;-1:-1:-1;;8507:16:31;632:990:121;8541:18:31;;;;8579:20;:::o;632:990:121:-;-1:-1:-1;;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;-1:-1:-1;632:990:121;;;;;;;;;;;-1:-1:-1;632:990:121;","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.28+commit.7893614a\"},\"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\":\"pure\",\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"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\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"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\":\"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118\",\"dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63\"]},\"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\":\"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33\",\"dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu\"]},\"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\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3\",\"dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/WrappedVara.sol\":{\"keccak256\":\"0x3e0983635bf88ee5284c4385c01431135b7eec294e2f1c0d22bc2dddc16790dd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0302725cd5b1bd6afacebd0d30d445bb1c86152745b6de42dc1a66a570b42718\",\"dweb:/ipfs/QmVCurygXE5PV65uvC12ybtXYpL292PMmEUPnbRtGbAY1V\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"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":"pure","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/","symbiotic-core/=lib/symbiotic-core/"],"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":"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139","urls":["bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2","dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx"],"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":"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76","urls":["bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118","dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63"],"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":"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5","urls":["bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33","dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu"],"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":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6","urls":["bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3","dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/WrappedVara.sol":{"keccak256":"0x3e0983635bf88ee5284c4385c01431135b7eec294e2f1c0d22bc2dddc16790dd","urls":["bzz-raw://0302725cd5b1bd6afacebd0d30d445bb1c86152745b6de42dc1a66a570b42718","dweb:/ipfs/QmVCurygXE5PV65uvC12ybtXYpL292PMmEUPnbRtGbAY1V"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/WrappedVara.sol","id":69250,"exportedSymbols":{"ERC20BurnableUpgradeable":[41265],"ERC20PermitUpgradeable":[41434],"ERC20Upgradeable":[41203],"Initializable":[40586],"OwnableUpgradeable":[40332],"WrappedVara":[69249]},"nodeType":"SourceUnit","src":"39:1584:121","nodes":[{"id":69144,"nodeType":"PragmaDirective","src":"39:24:121","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":69146,"nodeType":"ImportDirective","src":"65:96:121","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":69250,"sourceUnit":40587,"symbolAliases":[{"foreign":{"id":69145,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40586,"src":"73:13:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69148,"nodeType":"ImportDirective","src":"162:102:121","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":69250,"sourceUnit":41204,"symbolAliases":[{"foreign":{"id":69147,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41203,"src":"170:16:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69150,"nodeType":"ImportDirective","src":"265:133:121","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":69250,"sourceUnit":41266,"symbolAliases":[{"foreign":{"id":69149,"name":"ERC20BurnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41265,"src":"273:24:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69152,"nodeType":"ImportDirective","src":"399:101:121","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":69250,"sourceUnit":40333,"symbolAliases":[{"foreign":{"id":69151,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40332,"src":"407:18:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69154,"nodeType":"ImportDirective","src":"501:129:121","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":69250,"sourceUnit":41435,"symbolAliases":[{"foreign":{"id":69153,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41434,"src":"509:22:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69249,"nodeType":"ContractDefinition","src":"632:990:121","nodes":[{"id":69167,"nodeType":"VariableDeclaration","src":"784:51:121","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_NAME","nameLocation":"808:10:121","scope":69249,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":69165,"name":"string","nodeType":"ElementaryTypeName","src":"784:6:121","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"577261707065642056617261","id":69166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"821:14:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_985e2e9885ca23de2896caee5fad5adf116e2558361aa44c502ff8b2c1b2a41b","typeString":"literal_string \"Wrapped Vara\""},"value":"Wrapped Vara"},"visibility":"private"},{"id":69170,"nodeType":"VariableDeclaration","src":"841:46:121","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_SYMBOL","nameLocation":"865:12:121","scope":69249,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":69168,"name":"string","nodeType":"ElementaryTypeName","src":"841:6:121","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5756415241","id":69169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"880:7:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_203a7c23d1b412674989fae6808de72f52c6953d49ac548796ba3c05451693a4","typeString":"literal_string \"WVARA\""},"value":"WVARA"},"visibility":"private"},{"id":69173,"nodeType":"VariableDeclaration","src":"893:57:121","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_INITIAL_SUPPLY","nameLocation":"918:20:121","scope":69249,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69171,"name":"uint256","nodeType":"ElementaryTypeName","src":"893:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":69172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"941:9:121","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"visibility":"private"},{"id":69181,"nodeType":"FunctionDefinition","src":"1010:53:121","nodes":[],"body":{"id":69180,"nodeType":"Block","src":"1024:39:121","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":69177,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40554,"src":"1034:20:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":69178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1034:22:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69179,"nodeType":"ExpressionStatement","src":"1034:22:121"}]},"documentation":{"id":69174,"nodeType":"StructuredDocumentation","src":"957:48:121","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":69175,"nodeType":"ParameterList","parameters":[],"src":"1021:2:121"},"returnParameters":{"id":69176,"nodeType":"ParameterList","parameters":[],"src":"1024:0:121"},"scope":69249,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":69215,"nodeType":"FunctionDefinition","src":"1069:297:121","nodes":[],"body":{"id":69214,"nodeType":"Block","src":"1130:236:121","nodes":[],"statements":[{"expression":{"arguments":[{"id":69189,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69167,"src":"1153:10:121","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":69190,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69170,"src":"1165:12:121","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":69188,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40654,"src":"1140:12:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":69191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1140:38:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69192,"nodeType":"ExpressionStatement","src":"1140:38:121"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":69193,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41224,"src":"1188:20:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":69194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:22:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69195,"nodeType":"ExpressionStatement","src":"1188:22:121"},{"expression":{"arguments":[{"id":69197,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69183,"src":"1235:12:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69196,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40192,"src":"1220:14:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":69198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:28:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69199,"nodeType":"ExpressionStatement","src":"1220:28:121"},{"expression":{"arguments":[{"id":69201,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69167,"src":"1277:10:121","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":69200,"name":"__ERC20Permit_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41321,"src":"1258:18:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":69202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1258:30:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69203,"nodeType":"ExpressionStatement","src":"1258:30:121"},{"expression":{"arguments":[{"id":69205,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69183,"src":"1305:12:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69206,"name":"TOKEN_INITIAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69173,"src":"1319:20:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":69207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1342:2:121","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":69208,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[69233],"referencedDeclaration":69233,"src":"1348:8:121","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint8_$","typeString":"function () pure returns (uint8)"}},"id":69209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1348:10:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1342:16:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1319:39:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":69204,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41035,"src":"1299:5:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":69212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1299:60:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69213,"nodeType":"ExpressionStatement","src":"1299:60:121"}]},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":69186,"kind":"modifierInvocation","modifierName":{"id":69185,"name":"initializer","nameLocations":["1118:11:121"],"nodeType":"IdentifierPath","referencedDeclaration":40440,"src":"1118:11:121"},"nodeType":"ModifierInvocation","src":"1118:11:121"}],"name":"initialize","nameLocation":"1078:10:121","parameters":{"id":69184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69183,"mutability":"mutable","name":"initialOwner","nameLocation":"1097:12:121","nodeType":"VariableDeclaration","scope":69215,"src":"1089:20:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69182,"name":"address","nodeType":"ElementaryTypeName","src":"1089:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1088:22:121"},"returnParameters":{"id":69187,"nodeType":"ParameterList","parameters":[],"src":"1130:0:121"},"scope":69249,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":69224,"nodeType":"FunctionDefinition","src":"1372:60:121","nodes":[],"body":{"id":69223,"nodeType":"Block","src":"1430:2:121","nodes":[],"statements":[]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":69218,"kind":"modifierInvocation","modifierName":{"id":69217,"name":"onlyOwner","nameLocations":["1403:9:121"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"1403:9:121"},"nodeType":"ModifierInvocation","src":"1403:9:121"},{"arguments":[{"hexValue":"32","id":69220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1427:1:121","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":69221,"kind":"modifierInvocation","modifierName":{"id":69219,"name":"reinitializer","nameLocations":["1413:13:121"],"nodeType":"IdentifierPath","referencedDeclaration":40487,"src":"1413:13:121"},"nodeType":"ModifierInvocation","src":"1413:16:121"}],"name":"reinitialize","nameLocation":"1381:12:121","parameters":{"id":69216,"nodeType":"ParameterList","parameters":[],"src":"1393:2:121"},"returnParameters":{"id":69222,"nodeType":"ParameterList","parameters":[],"src":"1430:0:121"},"scope":69249,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":69233,"nodeType":"FunctionDefinition","src":"1438:83:121","nodes":[],"body":{"id":69232,"nodeType":"Block","src":"1495:26:121","nodes":[],"statements":[{"expression":{"hexValue":"3132","id":69230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1512:2:121","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"functionReturnParameters":69229,"id":69231,"nodeType":"Return","src":"1505:9:121"}]},"baseFunctions":[40723],"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"1447:8:121","overrides":{"id":69226,"nodeType":"OverrideSpecifier","overrides":[],"src":"1470:8:121"},"parameters":{"id":69225,"nodeType":"ParameterList","parameters":[],"src":"1455:2:121"},"returnParameters":{"id":69229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69228,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69233,"src":"1488:5:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":69227,"name":"uint8","nodeType":"ElementaryTypeName","src":"1488:5:121","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1487:7:121"},"scope":69249,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":69248,"nodeType":"FunctionDefinition","src":"1527:93:121","nodes":[],"body":{"id":69247,"nodeType":"Block","src":"1586:34:121","nodes":[],"statements":[{"expression":{"arguments":[{"id":69243,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69235,"src":"1602:2:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":69244,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69237,"src":"1606:6:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":69242,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41035,"src":"1596:5:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":69245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1596:17:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69246,"nodeType":"ExpressionStatement","src":"1596:17:121"}]},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":69240,"kind":"modifierInvocation","modifierName":{"id":69239,"name":"onlyOwner","nameLocations":["1576:9:121"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"1576:9:121"},"nodeType":"ModifierInvocation","src":"1576:9:121"}],"name":"mint","nameLocation":"1536:4:121","parameters":{"id":69238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69235,"mutability":"mutable","name":"to","nameLocation":"1549:2:121","nodeType":"VariableDeclaration","scope":69248,"src":"1541:10:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69234,"name":"address","nodeType":"ElementaryTypeName","src":"1541:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":69237,"mutability":"mutable","name":"amount","nameLocation":"1561:6:121","nodeType":"VariableDeclaration","scope":69248,"src":"1553:14:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69236,"name":"uint256","nodeType":"ElementaryTypeName","src":"1553:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1540:28:121"},"returnParameters":{"id":69241,"nodeType":"ParameterList","parameters":[],"src":"1586:0:121"},"scope":69249,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":69155,"name":"Initializable","nameLocations":["660:13:121"],"nodeType":"IdentifierPath","referencedDeclaration":40586,"src":"660:13:121"},"id":69156,"nodeType":"InheritanceSpecifier","src":"660:13:121"},{"baseName":{"id":69157,"name":"ERC20Upgradeable","nameLocations":["679:16:121"],"nodeType":"IdentifierPath","referencedDeclaration":41203,"src":"679:16:121"},"id":69158,"nodeType":"InheritanceSpecifier","src":"679:16:121"},{"baseName":{"id":69159,"name":"ERC20BurnableUpgradeable","nameLocations":["701:24:121"],"nodeType":"IdentifierPath","referencedDeclaration":41265,"src":"701:24:121"},"id":69160,"nodeType":"InheritanceSpecifier","src":"701:24:121"},{"baseName":{"id":69161,"name":"OwnableUpgradeable","nameLocations":["731:18:121"],"nodeType":"IdentifierPath","referencedDeclaration":40332,"src":"731:18:121"},"id":69162,"nodeType":"InheritanceSpecifier","src":"731:18:121"},{"baseName":{"id":69163,"name":"ERC20PermitUpgradeable","nameLocations":["755:22:121"],"nodeType":"IdentifierPath","referencedDeclaration":41434,"src":"755:22:121"},"id":69164,"nodeType":"InheritanceSpecifier","src":"755:22:121"}],"canonicalName":"WrappedVara","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[69249,41434,41591,41935,42212,43875,40332,41265,41203,42254,43839,43813,41480,40586],"name":"WrappedVara","nameLocation":"641:11:121","scope":69250,"usedErrors":[40168,40173,40349,40352,41300,41307,41494,42224,42229,42234,42243,42248,42253,44961,44966,44971],"usedEvents":[40179,40357,42192,43747,43756]}],"license":"UNLICENSED"},"id":121} \ No newline at end of file diff --git a/ethexe/ethereum/src/abi/gear.rs b/ethexe/ethereum/src/abi/gear.rs index c17c29ee506..a51c0148157 100644 --- a/ethexe/ethereum/src/abi/gear.rs +++ b/ethexe/ethereum/src/abi/gear.rs @@ -79,7 +79,7 @@ impl From for Gear::StateTransition { Self { actorId: actor_id_to_address_lossy(value.actor_id), newStateHash: h256_to_bytes32(value.new_state_hash), - inheritor: actor_id_to_address_lossy(value.inheritor), + inheritor: maybe_actor_id_to_addr_bytes(value.inheritor), valueToReceive: value.value_to_receive, valueClaims: value.value_claims.into_iter().map(Into::into).collect(), messages: value.messages.into_iter().map(Into::into).collect(), diff --git a/ethexe/ethereum/src/abi/mod.rs b/ethexe/ethereum/src/abi/mod.rs index e06c037db8c..a3633a1aee6 100644 --- a/ethexe/ethereum/src/abi/mod.rs +++ b/ethexe/ethereum/src/abi/mod.rs @@ -59,7 +59,7 @@ sol!( ); pub(crate) mod utils { - use alloy::primitives::{FixedBytes, Uint}; + use alloy::primitives::{Bytes, FixedBytes, Uint}; use gprimitives::{ActorId, CodeId, MessageId, H256}; pub type Bytes32 = FixedBytes<32>; @@ -90,6 +90,12 @@ pub(crate) mod utils { code_id.into_bytes().into() } + pub fn maybe_actor_id_to_addr_bytes(maybe_actor_id: Option) -> Bytes { + maybe_actor_id + .map(|actor_id| actor_id_to_address_lossy(actor_id).0.into()) + .unwrap_or_default() + } + pub fn message_id_to_bytes32(message_id: MessageId) -> Bytes32 { message_id.into_bytes().into() } diff --git a/ethexe/runtime/common/src/journal.rs b/ethexe/runtime/common/src/journal.rs index af4b6e73729..c0545fa5444 100644 --- a/ethexe/runtime/common/src/journal.rs +++ b/ethexe/runtime/common/src/journal.rs @@ -174,7 +174,7 @@ impl JournalHandler for Handler<'_, S> { state.program = Program::Exited(value_destination); transitions.modify_transition(id_exited, |transition| { - transition.inheritor = value_destination + transition.inheritor = Some(value_destination); }); mem::replace(&mut state.balance, 0) diff --git a/ethexe/runtime/common/src/transitions.rs b/ethexe/runtime/common/src/transitions.rs index b7b77789f6f..bf06a49aa75 100644 --- a/ethexe/runtime/common/src/transitions.rs +++ b/ethexe/runtime/common/src/transitions.rs @@ -172,7 +172,7 @@ impl InBlockTransitions { res.push(StateTransition { actor_id, new_state_hash, - inheritor: ActorId::zero(), + inheritor: modification.inheritor, value_to_receive: modification.value_to_receive, value_claims: modification.claims, messages: modification.messages, @@ -187,7 +187,7 @@ impl InBlockTransitions { #[derive(Debug, Default)] pub struct NonFinalTransition { initial_state: H256, - pub inheritor: ActorId, + pub inheritor: Option, pub value_to_receive: u128, pub claims: Vec, pub messages: Vec, @@ -200,6 +200,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.inheritor.is_zero() && self.value_to_receive == 0 && self.claims.is_empty() && self.messages.is_empty()) + && (self.inheritor.is_none() && 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 53adb896713..b74011fb99f 100644 --- a/ethexe/signer/src/digest.rs +++ b/ethexe/signer/src/digest.rs @@ -128,7 +128,9 @@ impl ToDigest for StateTransition { hasher.update(actor_id.to_address_lossy().as_bytes()); hasher.update(new_state_hash.as_bytes()); - hasher.update(inheritor.to_address_lossy().as_bytes()); + if let Some(inheritor) = inheritor { + 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(); @@ -208,7 +210,8 @@ mod tests { let state_transition = StateTransition { actor_id: ActorId::from(0), new_state_hash: H256::from([1; 32]), - inheritor: ActorId::from(0), + // TODO (breathx): change from u64 impl WITHIN THE PR. + inheritor: Some(ActorId::from(0)), value_to_receive: 0, value_claims: vec![], messages: vec![Message { diff --git a/ethexe/validator/src/lib.rs b/ethexe/validator/src/lib.rs index 227b14183c4..bec9fc8fb58 100644 --- a/ethexe/validator/src/lib.rs +++ b/ethexe/validator/src/lib.rs @@ -281,7 +281,7 @@ mod tests { let transition = StateTransition { actor_id: H256::random().0.into(), new_state_hash: H256::random(), - inheritor: H256::random().0.into(), + inheritor: Some(H256::random().0.into()), value_to_receive: 123, value_claims: vec![], messages: vec![],