-
Notifications
You must be signed in to change notification settings - Fork 126
Expand file tree
/
Copy pathGear.json
More file actions
1 lines (1 loc) · 313 KB
/
Copy pathGear.json
File metadata and controls
1 lines (1 loc) · 313 KB
1
{"abi":[{"type":"function","name":"COMPUTATION_THRESHOLD","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VALIDATORS_THRESHOLD_DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"VALIDATORS_THRESHOLD_NUMERATOR","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"WVARA_PER_SECOND","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"error","name":"ErasTimestampMustNotBeEqual","inputs":[]},{"type":"error","name":"InvalidFrostSignatureCount","inputs":[]},{"type":"error","name":"InvalidFrostSignatureLength","inputs":[]},{"type":"error","name":"TimestampInFuture","inputs":[]},{"type":"error","name":"TimestampOlderThanPreviousEra","inputs":[]},{"type":"error","name":"ValidationBeforeGenesis","inputs":[]},{"type":"error","name":"ValidatorsNotFoundForTimestamp","inputs":[]}],"bytecode":{"object":"0x6080806040523460175760a19081601c823930815050f35b5f80fdfe60808060405260043610156011575f80fd5b5f3560e01c9081630279472c14608e575080632c184e1c1460745780637841919a14605c5763db3fe3f1146043575f80fd5b5f366003190112605857602060405160028152f35b5f80fd5b5f3660031901126058576020604051639502f9008152f35b5f36600319011260585760206040516509184e72a0008152f35b5f36600319011260585780600360209252f3","sourceMap":"1515:33065:169:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60808060405260043610156011575f80fd5b5f3560e01c9081630279472c14608e575080632c184e1c1460745780637841919a14605c5763db3fe3f1146043575f80fd5b5f366003190112605857602060405160028152f35b5f80fd5b5f3660031901126058576020604051639502f9008152f35b5f36600319011260585760206040516509184e72a0008152f35b5f36600319011260585780600360209252f3","sourceMap":"1515:33065:169:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1515:33065:169;;;;;;;2071:1;1515:33065;;;;;;;;;;-1:-1:-1;;1515:33065:169;;;;;;;1855:13;1515:33065;;;;;;-1:-1:-1;;1515:33065:169;;;;;;;2383:18;1515:33065;;;;;;-1:-1:-1;;1515:33065:169;;;;;2203:1;1515:33065;;;","linkReferences":{}},"methodIdentifiers":{"COMPUTATION_THRESHOLD()":"7841919a","VALIDATORS_THRESHOLD_DENOMINATOR()":"0279472c","VALIDATORS_THRESHOLD_NUMERATOR()":"db3fe3f1","WVARA_PER_SECOND()":"2c184e1c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ErasTimestampMustNotBeEqual\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFrostSignatureCount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFrostSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampInFuture\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampOlderThanPreviousEra\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidationBeforeGenesis\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorsNotFoundForTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"COMPUTATION_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_THRESHOLD_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_THRESHOLD_NUMERATOR\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WVARA_PER_SECOND\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Library for core protocol utility functions for hashing, validation, and consensus-related logic. It provides: - Canonical hashing functions for protocol entities (messages, value claims, batch/code commitments, state transitions) - Validator set management with era-based switching and threshold configuration - Signature verification support for FROST aggregated signatures and ECDSA threshold signatures with transient storage to prevent double counting of signatures - Era and timeline utilities for selecting correct validator sets based on timestamp The library acts as a shared foundation for consensus, validation, and commitment verification across all protocol components.\",\"errors\":{\"ErasTimestampMustNotBeEqual()\":[{\"details\":\"Thrown when the timestamp of an era is equal to the timestamp of the previous era. Should never happen, because the implementation.\"}],\"InvalidFrostSignatureCount()\":[{\"details\":\"Thrown when the number of FROST signatures is invalid.\"}],\"InvalidFrostSignatureLength()\":[{\"details\":\"Thrown when the length of a FROST signature is invalid, it must be exactly 96 bytes.\"}],\"TimestampInFuture()\":[{\"details\":\"Thrown when the timestamp is in the future.\"}],\"TimestampOlderThanPreviousEra()\":[{\"details\":\"Thrown when the timestamp is older than the previous era.\"}],\"ValidationBeforeGenesis()\":[{\"details\":\"Thrown when signature validation is attempted before the genesis block.\"}],\"ValidatorsNotFoundForTimestamp()\":[{\"details\":\"Thrown when no validators are found for a given timestamp. Should never happen, because the implementation.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"COMPUTATION_THRESHOLD\":{\"details\":\"The threshold for computation cost in gear gas. 2.5 * (10 ** 9) of gear gas.\"},\"VALIDATORS_THRESHOLD_DENOMINATOR\":{\"details\":\"The validators threshold denominator.\"},\"VALIDATORS_THRESHOLD_NUMERATOR\":{\"details\":\"2/3 of validators must sign the commitment for it to be valid.The validators threshold numerator.\"},\"WVARA_PER_SECOND\":{\"details\":\"The amount of WVara tokens to be paid per compute second. 10 WVARA tokens per compute second.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/Gear.sol\":\"Gear\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-core/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/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/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/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"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\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"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\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x27de010f02bc60b56cf79a7636e731522f17d30fab3018eaaae1d119355e89bc\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://4530cbc4fc3760bc41acd6a40ad95325a0dc62b204e383ed0b70b2e8c4f2a009\",\"dweb:/ipfs/QmVtbtML2kT3vuZY5xkdED1AonCBDxwCRBjfAY3PZAezNg\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x984f8997708ec180ffdd1bd923e86b5ab99b0b1b87984078309f927a1d927b45\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://95777eeeda737e555cda2e3ce0aafaebf18e6909fc38274689e54757e12f3ded\",\"dweb:/ipfs/QmPNYixYTF1vTGXY3TqXfBZHnagVwNggFigkjea3tGMfHA\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ErasTimestampMustNotBeEqual"},{"inputs":[],"type":"error","name":"InvalidFrostSignatureCount"},{"inputs":[],"type":"error","name":"InvalidFrostSignatureLength"},{"inputs":[],"type":"error","name":"TimestampInFuture"},{"inputs":[],"type":"error","name":"TimestampOlderThanPreviousEra"},{"inputs":[],"type":"error","name":"ValidationBeforeGenesis"},{"inputs":[],"type":"error","name":"ValidatorsNotFoundForTimestamp"},{"inputs":[],"stateMutability":"view","type":"function","name":"COMPUTATION_THRESHOLD","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VALIDATORS_THRESHOLD_DENOMINATOR","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VALIDATORS_THRESHOLD_NUMERATOR","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WVARA_PER_SECOND","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]}],"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/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-core/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/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/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/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/libraries/Gear.sol":"Gear"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"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/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"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":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"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"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/IRouter.sol":{"keccak256":"0x27de010f02bc60b56cf79a7636e731522f17d30fab3018eaaae1d119355e89bc","urls":["bzz-raw://4530cbc4fc3760bc41acd6a40ad95325a0dc62b204e383ed0b70b2e8c4f2a009","dweb:/ipfs/QmVtbtML2kT3vuZY5xkdED1AonCBDxwCRBjfAY3PZAezNg"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x984f8997708ec180ffdd1bd923e86b5ab99b0b1b87984078309f927a1d927b45","urls":["bzz-raw://95777eeeda737e555cda2e3ce0aafaebf18e6909fc38274689e54757e12f3ded","dweb:/ipfs/QmPNYixYTF1vTGXY3TqXfBZHnagVwNggFigkjea3tGMfHA"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/libraries/Gear.sol","id":84182,"exportedSymbols":{"ECDSA":[51038],"FROST":[40965],"Gear":[84181],"Hashes":[41483],"IRouter":[75008],"MessageHashUtils":[52237],"SafeCast":[55635],"SlotDerivation":[48965],"Time":[60343],"TransientSlot":[50690]},"nodeType":"SourceUnit","src":"74:34507:169","nodes":[{"id":82914,"nodeType":"PragmaDirective","src":"74:24:169","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":82916,"nodeType":"ImportDirective","src":"100:80:169","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","file":"@openzeppelin/contracts/utils/SlotDerivation.sol","nameLocation":"-1:-1:-1","scope":84182,"sourceUnit":48966,"symbolAliases":[{"foreign":{"id":82915,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"108:14:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82918,"nodeType":"ImportDirective","src":"181:78:169","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol","file":"@openzeppelin/contracts/utils/TransientSlot.sol","nameLocation":"-1:-1:-1","scope":84182,"sourceUnit":50691,"symbolAliases":[{"foreign":{"id":82917,"name":"TransientSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50690,"src":"189:13:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82920,"nodeType":"ImportDirective","src":"260:75:169","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","file":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","nameLocation":"-1:-1:-1","scope":84182,"sourceUnit":51039,"symbolAliases":[{"foreign":{"id":82919,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51038,"src":"268:5:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82922,"nodeType":"ImportDirective","src":"336:97:169","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol","file":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","nameLocation":"-1:-1:-1","scope":84182,"sourceUnit":52238,"symbolAliases":[{"foreign":{"id":82921,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52237,"src":"344:16:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82924,"nodeType":"ImportDirective","src":"434:73:169","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","nameLocation":"-1:-1:-1","scope":84182,"sourceUnit":55636,"symbolAliases":[{"foreign":{"id":82923,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55635,"src":"442:8:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82926,"nodeType":"ImportDirective","src":"508:66:169","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/types/Time.sol","file":"@openzeppelin/contracts/utils/types/Time.sol","nameLocation":"-1:-1:-1","scope":84182,"sourceUnit":60344,"symbolAliases":[{"foreign":{"id":82925,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"516:4:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82928,"nodeType":"ImportDirective","src":"575:52:169","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/FROST.sol","file":"frost-secp256k1-evm/FROST.sol","nameLocation":"-1:-1:-1","scope":84182,"sourceUnit":40966,"symbolAliases":[{"foreign":{"id":82927,"name":"FROST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40965,"src":"583:5:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82930,"nodeType":"ImportDirective","src":"628:73:169","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol","file":"frost-secp256k1-evm/utils/cryptography/Hashes.sol","nameLocation":"-1:-1:-1","scope":84182,"sourceUnit":41484,"symbolAliases":[{"foreign":{"id":82929,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"636:6:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82932,"nodeType":"ImportDirective","src":"702:40:169","nodes":[],"absolutePath":"src/IRouter.sol","file":"src/IRouter.sol","nameLocation":"-1:-1:-1","scope":84182,"sourceUnit":75009,"symbolAliases":[{"foreign":{"id":82931,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75008,"src":"710:7:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84181,"nodeType":"ContractDefinition","src":"1515:33065:169","nodes":[{"id":82936,"nodeType":"UsingForDirective","src":"1534:24:169","nodes":[],"global":false,"libraryName":{"id":82934,"name":"ECDSA","nameLocations":["1540:5:169"],"nodeType":"IdentifierPath","referencedDeclaration":51038,"src":"1540:5:169"},"typeName":{"id":82935,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1550:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"id":82939,"nodeType":"UsingForDirective","src":"1563:35:169","nodes":[],"global":false,"libraryName":{"id":82937,"name":"MessageHashUtils","nameLocations":["1569:16:169"],"nodeType":"IdentifierPath","referencedDeclaration":52237,"src":"1569:16:169"},"typeName":{"id":82938,"name":"address","nodeType":"ElementaryTypeName","src":"1590:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":82941,"nodeType":"UsingForDirective","src":"1604:26:169","nodes":[],"global":false,"libraryName":{"id":82940,"name":"TransientSlot","nameLocations":["1610:13:169"],"nodeType":"IdentifierPath","referencedDeclaration":50690,"src":"1610:13:169"}},{"id":82943,"nodeType":"UsingForDirective","src":"1635:27:169","nodes":[],"global":false,"libraryName":{"id":82942,"name":"SlotDerivation","nameLocations":["1641:14:169"],"nodeType":"IdentifierPath","referencedDeclaration":48965,"src":"1641:14:169"}},{"id":82947,"nodeType":"VariableDeclaration","src":"1808:60:169","nodes":[],"constant":true,"documentation":{"id":82944,"nodeType":"StructuredDocumentation","src":"1691:112:169","text":" @dev The threshold for computation cost in gear gas.\n 2.5 * (10 ** 9) of gear gas."},"functionSelector":"7841919a","mutability":"constant","name":"COMPUTATION_THRESHOLD","nameLocation":"1831:21:169","scope":84181,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":82945,"name":"uint64","nodeType":"ElementaryTypeName","src":"1808:6:169","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":{"hexValue":"325f3530305f3030305f303030","id":82946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1855:13:169","typeDescriptions":{"typeIdentifier":"t_rational_2500000000_by_1","typeString":"int_const 2500000000"},"value":"2_500_000_000"},"visibility":"public"},{"id":82951,"nodeType":"VariableDeclaration","src":"2014:58:169","nodes":[],"constant":true,"documentation":{"id":82948,"nodeType":"StructuredDocumentation","src":"1875:134:169","text":" @dev 2/3 of validators must sign the commitment for it to be valid.\n @dev The validators threshold numerator."},"functionSelector":"db3fe3f1","mutability":"constant","name":"VALIDATORS_THRESHOLD_NUMERATOR","nameLocation":"2038:30:169","scope":84181,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82949,"name":"uint128","nodeType":"ElementaryTypeName","src":"2014:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"value":{"hexValue":"32","id":82950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2071:1:169","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"public"},{"id":82955,"nodeType":"VariableDeclaration","src":"2144:60:169","nodes":[],"constant":true,"documentation":{"id":82952,"nodeType":"StructuredDocumentation","src":"2078:61:169","text":" @dev The validators threshold denominator."},"functionSelector":"0279472c","mutability":"constant","name":"VALIDATORS_THRESHOLD_DENOMINATOR","nameLocation":"2168:32:169","scope":84181,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82953,"name":"uint128","nodeType":"ElementaryTypeName","src":"2144:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"value":{"hexValue":"33","id":82954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2203:1:169","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"public"},{"id":82959,"nodeType":"VariableDeclaration","src":"2340:61:169","nodes":[],"constant":true,"documentation":{"id":82956,"nodeType":"StructuredDocumentation","src":"2211:124:169","text":" @dev The amount of WVara tokens to be paid per compute second.\n 10 WVARA tokens per compute second."},"functionSelector":"2c184e1c","mutability":"constant","name":"WVARA_PER_SECOND","nameLocation":"2364:16:169","scope":84181,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82957,"name":"uint128","nodeType":"ElementaryTypeName","src":"2340:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"value":{"hexValue":"31305f3030305f3030305f3030305f303030","id":82958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2383:18:169","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000_by_1","typeString":"int_const 10000000000000"},"value":"10_000_000_000_000"},"visibility":"public"},{"id":82962,"nodeType":"ErrorDefinition","src":"2528:32:169","nodes":[],"documentation":{"id":82960,"nodeType":"StructuredDocumentation","src":"2428:95:169","text":" @dev Thrown when signature validation is attempted before the genesis block."},"errorSelector":"00f4462b","name":"ValidationBeforeGenesis","nameLocation":"2534:23:169","parameters":{"id":82961,"nodeType":"ParameterList","parameters":[],"src":"2557:2:169"}},{"id":82965,"nodeType":"ErrorDefinition","src":"2652:38:169","nodes":[],"documentation":{"id":82963,"nodeType":"StructuredDocumentation","src":"2566:81:169","text":" @dev Thrown when the timestamp is older than the previous era."},"errorSelector":"8d763ca0","name":"TimestampOlderThanPreviousEra","nameLocation":"2658:29:169","parameters":{"id":82964,"nodeType":"ParameterList","parameters":[],"src":"2687:2:169"}},{"id":82968,"nodeType":"ErrorDefinition","src":"2768:26:169","nodes":[],"documentation":{"id":82966,"nodeType":"StructuredDocumentation","src":"2696:67:169","text":" @dev Thrown when the timestamp is in the future."},"errorSelector":"47860b97","name":"TimestampInFuture","nameLocation":"2774:17:169","parameters":{"id":82967,"nodeType":"ParameterList","parameters":[],"src":"2791:2:169"}},{"id":82971,"nodeType":"ErrorDefinition","src":"2883:35:169","nodes":[],"documentation":{"id":82969,"nodeType":"StructuredDocumentation","src":"2800:78:169","text":" @dev Thrown when the number of FROST signatures is invalid."},"errorSelector":"60a1ea77","name":"InvalidFrostSignatureCount","nameLocation":"2889:26:169","parameters":{"id":82970,"nodeType":"ParameterList","parameters":[],"src":"2915:2:169"}},{"id":82974,"nodeType":"ErrorDefinition","src":"3037:36:169","nodes":[],"documentation":{"id":82972,"nodeType":"StructuredDocumentation","src":"2924:108:169","text":" @dev Thrown when the length of a FROST signature is invalid, it must be exactly 96 bytes."},"errorSelector":"2ce466bf","name":"InvalidFrostSignatureLength","nameLocation":"3043:27:169","parameters":{"id":82973,"nodeType":"ParameterList","parameters":[],"src":"3070:2:169"}},{"id":82977,"nodeType":"ErrorDefinition","src":"3251:36:169","nodes":[],"documentation":{"id":82975,"nodeType":"StructuredDocumentation","src":"3079:167:169","text":" @dev Thrown when the timestamp of an era is equal to the timestamp of the previous era.\n Should never happen, because the implementation."},"errorSelector":"f26224af","name":"ErasTimestampMustNotBeEqual","nameLocation":"3257:27:169","parameters":{"id":82976,"nodeType":"ParameterList","parameters":[],"src":"3284:2:169"}},{"id":82980,"nodeType":"ErrorDefinition","src":"3441:39:169","nodes":[],"documentation":{"id":82978,"nodeType":"StructuredDocumentation","src":"3293:143:169","text":" @dev Thrown when no validators are found for a given timestamp.\n Should never happen, because the implementation."},"errorSelector":"98715d2a","name":"ValidatorsNotFoundForTimestamp","nameLocation":"3447:30:169","parameters":{"id":82979,"nodeType":"ParameterList","parameters":[],"src":"3477:2:169"}},{"id":82986,"nodeType":"StructDefinition","src":"3768:72:169","nodes":[],"canonicalName":"Gear.AggregatedPublicKey","documentation":{"id":82981,"nodeType":"StructuredDocumentation","src":"3507:256:169","text":" @dev Represents an aggregated public key.\n When present (`hasAggregatedPublicKey` is `true`), it is checked with `FROST.isValidPublicKey(x, y)` in `Router._resetValidators(...)`,\n so we can be sure that it is valid."},"members":[{"constant":false,"id":82983,"mutability":"mutable","name":"x","nameLocation":"3813:1:169","nodeType":"VariableDeclaration","scope":82986,"src":"3805:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82982,"name":"uint256","nodeType":"ElementaryTypeName","src":"3805:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":82985,"mutability":"mutable","name":"y","nameLocation":"3832:1:169","nodeType":"VariableDeclaration","scope":82986,"src":"3824:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82984,"name":"uint256","nodeType":"ElementaryTypeName","src":"3824:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"AggregatedPublicKey","nameLocation":"3775:19:169","scope":84181,"visibility":"public"},{"id":83007,"nodeType":"StructDefinition","src":"3909:1200:169","nodes":[],"canonicalName":"Gear.Validators","documentation":{"id":82987,"nodeType":"StructuredDocumentation","src":"3846:58:169","text":" @dev Represents validators information."},"members":[{"constant":false,"id":82991,"mutability":"mutable","name":"aggregatedPublicKey","nameLocation":"4299:19:169","nodeType":"VariableDeclaration","scope":83007,"src":"4279:39:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82986_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":82990,"nodeType":"UserDefinedTypeName","pathNode":{"id":82989,"name":"AggregatedPublicKey","nameLocations":["4279:19:169"],"nodeType":"IdentifierPath","referencedDeclaration":82986,"src":"4279:19:169"},"referencedDeclaration":82986,"src":"4279:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82986_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"},{"constant":false,"id":82994,"mutability":"mutable","name":"verifiableSecretSharingCommitmentPointer","nameLocation":"4626:40:169","nodeType":"VariableDeclaration","scope":83007,"src":"4618:48:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82993,"name":"address","nodeType":"ElementaryTypeName","src":"4618:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82999,"mutability":"mutable","name":"map","nameLocation":"4884:3:169","nodeType":"VariableDeclaration","scope":83007,"src":"4859:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":82998,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":82996,"name":"address","nodeType":"ElementaryTypeName","src":"4867:7:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4859:24:169","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":82997,"name":"bool","nodeType":"ElementaryTypeName","src":"4878:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":83003,"mutability":"mutable","name":"list","nameLocation":"4976:4:169","nodeType":"VariableDeclaration","scope":83007,"src":"4966:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":83001,"name":"address","nodeType":"ElementaryTypeName","src":"4966:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":83002,"nodeType":"ArrayTypeName","src":"4966:9:169","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":83006,"mutability":"mutable","name":"useFromTimestamp","nameLocation":"5086:16:169","nodeType":"VariableDeclaration","scope":83007,"src":"5078:24:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83005,"name":"uint256","nodeType":"ElementaryTypeName","src":"5078:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Validators","nameLocation":"3916:10:169","scope":84181,"visibility":"public"},{"id":83019,"nodeType":"StructDefinition","src":"5186:194:169","nodes":[],"canonicalName":"Gear.ValidatorsView","documentation":{"id":83008,"nodeType":"StructuredDocumentation","src":"5115:66:169","text":" @dev Represents view of validators information."},"members":[{"constant":false,"id":83011,"mutability":"mutable","name":"aggregatedPublicKey","nameLocation":"5238:19:169","nodeType":"VariableDeclaration","scope":83019,"src":"5218:39:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82986_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":83010,"nodeType":"UserDefinedTypeName","pathNode":{"id":83009,"name":"AggregatedPublicKey","nameLocations":["5218:19:169"],"nodeType":"IdentifierPath","referencedDeclaration":82986,"src":"5218:19:169"},"referencedDeclaration":82986,"src":"5218:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82986_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"},{"constant":false,"id":83013,"mutability":"mutable","name":"verifiableSecretSharingCommitmentPointer","nameLocation":"5275:40:169","nodeType":"VariableDeclaration","scope":83019,"src":"5267:48:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83012,"name":"address","nodeType":"ElementaryTypeName","src":"5267:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83016,"mutability":"mutable","name":"list","nameLocation":"5335:4:169","nodeType":"VariableDeclaration","scope":83019,"src":"5325:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":83014,"name":"address","nodeType":"ElementaryTypeName","src":"5325:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":83015,"nodeType":"ArrayTypeName","src":"5325:9:169","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":83018,"mutability":"mutable","name":"useFromTimestamp","nameLocation":"5357:16:169","nodeType":"VariableDeclaration","scope":83019,"src":"5349:24:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83017,"name":"uint256","nodeType":"ElementaryTypeName","src":"5349:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ValidatorsView","nameLocation":"5193:14:169","scope":84181,"visibility":"public"},{"id":83030,"nodeType":"StructDefinition","src":"5451:353:169","nodes":[],"canonicalName":"Gear.AddressBook","documentation":{"id":83020,"nodeType":"StructuredDocumentation","src":"5386:60:169","text":" @dev Represents address book information."},"members":[{"constant":false,"id":83023,"mutability":"mutable","name":"mirror","nameLocation":"5566:6:169","nodeType":"VariableDeclaration","scope":83030,"src":"5558:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83022,"name":"address","nodeType":"ElementaryTypeName","src":"5558:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83026,"mutability":"mutable","name":"wrappedVara","nameLocation":"5673:11:169","nodeType":"VariableDeclaration","scope":83030,"src":"5665:19:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83025,"name":"address","nodeType":"ElementaryTypeName","src":"5665:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83029,"mutability":"mutable","name":"middleware","nameLocation":"5787:10:169","nodeType":"VariableDeclaration","scope":83030,"src":"5779:18:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83028,"name":"address","nodeType":"ElementaryTypeName","src":"5779:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressBook","nameLocation":"5458:11:169","scope":84181,"visibility":"public"},{"id":83038,"nodeType":"StructDefinition","src":"5866:248:169","nodes":[],"canonicalName":"Gear.CodeCommitment","documentation":{"id":83031,"nodeType":"StructuredDocumentation","src":"5810:51:169","text":" @dev Represents code commitment."},"members":[{"constant":false,"id":83034,"mutability":"mutable","name":"id","nameLocation":"6010:2:169","nodeType":"VariableDeclaration","scope":83038,"src":"6002:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83033,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6002:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83037,"mutability":"mutable","name":"valid","nameLocation":"6102:5:169","nodeType":"VariableDeclaration","scope":83038,"src":"6097:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83036,"name":"bool","nodeType":"ElementaryTypeName","src":"6097:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"CodeCommitment","nameLocation":"5873:14:169","scope":84181,"visibility":"public"},{"id":83051,"nodeType":"StructDefinition","src":"6177:541:169","nodes":[],"canonicalName":"Gear.ChainCommitment","documentation":{"id":83039,"nodeType":"StructuredDocumentation","src":"6120:52:169","text":" @dev Represents chain commitment."},"members":[{"constant":false,"id":83044,"mutability":"mutable","name":"transitions","nameLocation":"6319:11:169","nodeType":"VariableDeclaration","scope":83051,"src":"6301:29:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$83249_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"},"typeName":{"baseType":{"id":83042,"nodeType":"UserDefinedTypeName","pathNode":{"id":83041,"name":"StateTransition","nameLocations":["6301:15:169"],"nodeType":"IdentifierPath","referencedDeclaration":83249,"src":"6301:15:169"},"referencedDeclaration":83249,"src":"6301:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83249_storage_ptr","typeString":"struct Gear.StateTransition"}},"id":83043,"nodeType":"ArrayTypeName","src":"6301:17:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$83249_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"}},"visibility":"internal"},{"constant":false,"id":83047,"mutability":"mutable","name":"head","nameLocation":"6436:4:169","nodeType":"VariableDeclaration","scope":83051,"src":"6428:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83046,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6428:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83050,"mutability":"mutable","name":"lastAdvancedEthBlock","nameLocation":"6691:20:169","nodeType":"VariableDeclaration","scope":83051,"src":"6683:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83049,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6683:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"ChainCommitment","nameLocation":"6184:15:169","scope":84181,"visibility":"public"},{"id":83065,"nodeType":"StructDefinition","src":"6786:226:169","nodes":[],"canonicalName":"Gear.ValidatorsCommitment","documentation":{"id":83052,"nodeType":"StructuredDocumentation","src":"6724:57:169","text":" @dev Represents validators commitment."},"members":[{"constant":false,"id":83054,"mutability":"mutable","name":"hasAggregatedPublicKey","nameLocation":"6829:22:169","nodeType":"VariableDeclaration","scope":83065,"src":"6824:27:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83053,"name":"bool","nodeType":"ElementaryTypeName","src":"6824:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":83057,"mutability":"mutable","name":"aggregatedPublicKey","nameLocation":"6881:19:169","nodeType":"VariableDeclaration","scope":83065,"src":"6861:39:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82986_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":83056,"nodeType":"UserDefinedTypeName","pathNode":{"id":83055,"name":"AggregatedPublicKey","nameLocations":["6861:19:169"],"nodeType":"IdentifierPath","referencedDeclaration":82986,"src":"6861:19:169"},"referencedDeclaration":82986,"src":"6861:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82986_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"},{"constant":false,"id":83059,"mutability":"mutable","name":"verifiableSecretSharingCommitment","nameLocation":"6916:33:169","nodeType":"VariableDeclaration","scope":83065,"src":"6910:39:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":83058,"name":"bytes","nodeType":"ElementaryTypeName","src":"6910:5:169","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":83062,"mutability":"mutable","name":"validators","nameLocation":"6969:10:169","nodeType":"VariableDeclaration","scope":83065,"src":"6959:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":83060,"name":"address","nodeType":"ElementaryTypeName","src":"6959:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":83061,"nodeType":"ArrayTypeName","src":"6959:9:169","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":83064,"mutability":"mutable","name":"eraIndex","nameLocation":"6997:8:169","nodeType":"VariableDeclaration","scope":83065,"src":"6989:16:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83063,"name":"uint256","nodeType":"ElementaryTypeName","src":"6989:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ValidatorsCommitment","nameLocation":"6793:20:169","scope":84181,"visibility":"public"},{"id":83099,"nodeType":"StructDefinition","src":"7075:1206:169","nodes":[],"canonicalName":"Gear.BatchCommitment","documentation":{"id":83066,"nodeType":"StructuredDocumentation","src":"7018:52:169","text":" @dev Represents batch commitment."},"members":[{"constant":false,"id":83069,"mutability":"mutable","name":"blockHash","nameLocation":"7212:9:169","nodeType":"VariableDeclaration","scope":83099,"src":"7204:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83068,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7204:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83072,"mutability":"mutable","name":"blockTimestamp","nameLocation":"7340:14:169","nodeType":"VariableDeclaration","scope":83099,"src":"7333:21:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":83071,"name":"uint48","nodeType":"ElementaryTypeName","src":"7333:6:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":83075,"mutability":"mutable","name":"previousCommittedBatchHash","nameLocation":"7453:26:169","nodeType":"VariableDeclaration","scope":83099,"src":"7445:34:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83074,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7445:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83078,"mutability":"mutable","name":"expiry","nameLocation":"7715:6:169","nodeType":"VariableDeclaration","scope":83099,"src":"7709:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":83077,"name":"uint8","nodeType":"ElementaryTypeName","src":"7709:5:169","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":83083,"mutability":"mutable","name":"chainCommitment","nameLocation":"7841:15:169","nodeType":"VariableDeclaration","scope":83099,"src":"7823:33:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ChainCommitment_$83051_storage_$dyn_storage_ptr","typeString":"struct Gear.ChainCommitment[]"},"typeName":{"baseType":{"id":83081,"nodeType":"UserDefinedTypeName","pathNode":{"id":83080,"name":"ChainCommitment","nameLocations":["7823:15:169"],"nodeType":"IdentifierPath","referencedDeclaration":83051,"src":"7823:15:169"},"referencedDeclaration":83051,"src":"7823:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$83051_storage_ptr","typeString":"struct Gear.ChainCommitment"}},"id":83082,"nodeType":"ArrayTypeName","src":"7823:17:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ChainCommitment_$83051_storage_$dyn_storage_ptr","typeString":"struct Gear.ChainCommitment[]"}},"visibility":"internal"},{"constant":false,"id":83088,"mutability":"mutable","name":"codeCommitments","nameLocation":"7968:15:169","nodeType":"VariableDeclaration","scope":83099,"src":"7951:32:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$83038_storage_$dyn_storage_ptr","typeString":"struct Gear.CodeCommitment[]"},"typeName":{"baseType":{"id":83086,"nodeType":"UserDefinedTypeName","pathNode":{"id":83085,"name":"CodeCommitment","nameLocations":["7951:14:169"],"nodeType":"IdentifierPath","referencedDeclaration":83038,"src":"7951:14:169"},"referencedDeclaration":83038,"src":"7951:14:169","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$83038_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"id":83087,"nodeType":"ArrayTypeName","src":"7951:16:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$83038_storage_$dyn_storage_ptr","typeString":"struct Gear.CodeCommitment[]"}},"visibility":"internal"},{"constant":false,"id":83093,"mutability":"mutable","name":"rewardsCommitment","nameLocation":"8107:17:169","nodeType":"VariableDeclaration","scope":83099,"src":"8087:37:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RewardsCommitment_$83109_storage_$dyn_storage_ptr","typeString":"struct Gear.RewardsCommitment[]"},"typeName":{"baseType":{"id":83091,"nodeType":"UserDefinedTypeName","pathNode":{"id":83090,"name":"RewardsCommitment","nameLocations":["8087:17:169"],"nodeType":"IdentifierPath","referencedDeclaration":83109,"src":"8087:17:169"},"referencedDeclaration":83109,"src":"8087:17:169","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$83109_storage_ptr","typeString":"struct Gear.RewardsCommitment"}},"id":83092,"nodeType":"ArrayTypeName","src":"8087:19:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RewardsCommitment_$83109_storage_$dyn_storage_ptr","typeString":"struct Gear.RewardsCommitment[]"}},"visibility":"internal"},{"constant":false,"id":83098,"mutability":"mutable","name":"validatorsCommitment","nameLocation":"8254:20:169","nodeType":"VariableDeclaration","scope":83099,"src":"8231:43:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidatorsCommitment_$83065_storage_$dyn_storage_ptr","typeString":"struct Gear.ValidatorsCommitment[]"},"typeName":{"baseType":{"id":83096,"nodeType":"UserDefinedTypeName","pathNode":{"id":83095,"name":"ValidatorsCommitment","nameLocations":["8231:20:169"],"nodeType":"IdentifierPath","referencedDeclaration":83065,"src":"8231:20:169"},"referencedDeclaration":83065,"src":"8231:20:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$83065_storage_ptr","typeString":"struct Gear.ValidatorsCommitment"}},"id":83097,"nodeType":"ArrayTypeName","src":"8231:22:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidatorsCommitment_$83065_storage_$dyn_storage_ptr","typeString":"struct Gear.ValidatorsCommitment[]"}},"visibility":"internal"}],"name":"BatchCommitment","nameLocation":"7082:15:169","scope":84181,"visibility":"public"},{"id":83109,"nodeType":"StructDefinition","src":"8346:144:169","nodes":[],"canonicalName":"Gear.RewardsCommitment","documentation":{"id":83100,"nodeType":"StructuredDocumentation","src":"8287:54:169","text":" @dev Represents rewards commitment."},"members":[{"constant":false,"id":83103,"mutability":"mutable","name":"operators","nameLocation":"8407:9:169","nodeType":"VariableDeclaration","scope":83109,"src":"8381:35:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_OperatorRewardsCommitment_$83115_storage_ptr","typeString":"struct Gear.OperatorRewardsCommitment"},"typeName":{"id":83102,"nodeType":"UserDefinedTypeName","pathNode":{"id":83101,"name":"OperatorRewardsCommitment","nameLocations":["8381:25:169"],"nodeType":"IdentifierPath","referencedDeclaration":83115,"src":"8381:25:169"},"referencedDeclaration":83115,"src":"8381:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_OperatorRewardsCommitment_$83115_storage_ptr","typeString":"struct Gear.OperatorRewardsCommitment"}},"visibility":"internal"},{"constant":false,"id":83106,"mutability":"mutable","name":"stakers","nameLocation":"8450:7:169","nodeType":"VariableDeclaration","scope":83109,"src":"8426:31:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83125_storage_ptr","typeString":"struct Gear.StakerRewardsCommitment"},"typeName":{"id":83105,"nodeType":"UserDefinedTypeName","pathNode":{"id":83104,"name":"StakerRewardsCommitment","nameLocations":["8426:23:169"],"nodeType":"IdentifierPath","referencedDeclaration":83125,"src":"8426:23:169"},"referencedDeclaration":83125,"src":"8426:23:169","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83125_storage_ptr","typeString":"struct Gear.StakerRewardsCommitment"}},"visibility":"internal"},{"constant":false,"id":83108,"mutability":"mutable","name":"timestamp","nameLocation":"8474:9:169","nodeType":"VariableDeclaration","scope":83109,"src":"8467:16:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":83107,"name":"uint48","nodeType":"ElementaryTypeName","src":"8467:6:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"RewardsCommitment","nameLocation":"8353:17:169","scope":84181,"visibility":"public"},{"id":83115,"nodeType":"StructDefinition","src":"8564:86:169","nodes":[],"canonicalName":"Gear.OperatorRewardsCommitment","documentation":{"id":83110,"nodeType":"StructuredDocumentation","src":"8496:63:169","text":" @dev Represents operator rewards commitment."},"members":[{"constant":false,"id":83112,"mutability":"mutable","name":"amount","nameLocation":"8615:6:169","nodeType":"VariableDeclaration","scope":83115,"src":"8607:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83111,"name":"uint256","nodeType":"ElementaryTypeName","src":"8607:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83114,"mutability":"mutable","name":"root","nameLocation":"8639:4:169","nodeType":"VariableDeclaration","scope":83115,"src":"8631:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83113,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8631:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"OperatorRewardsCommitment","nameLocation":"8571:25:169","scope":84181,"visibility":"public"},{"id":83125,"nodeType":"StructDefinition","src":"8722:128:169","nodes":[],"canonicalName":"Gear.StakerRewardsCommitment","documentation":{"id":83116,"nodeType":"StructuredDocumentation","src":"8656:61:169","text":" @dev Represents staker rewards commitment."},"members":[{"constant":false,"id":83120,"mutability":"mutable","name":"distribution","nameLocation":"8779:12:169","nodeType":"VariableDeclaration","scope":83125,"src":"8763:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StakerRewards_$83131_storage_$dyn_storage_ptr","typeString":"struct Gear.StakerRewards[]"},"typeName":{"baseType":{"id":83118,"nodeType":"UserDefinedTypeName","pathNode":{"id":83117,"name":"StakerRewards","nameLocations":["8763:13:169"],"nodeType":"IdentifierPath","referencedDeclaration":83131,"src":"8763:13:169"},"referencedDeclaration":83131,"src":"8763:13:169","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$83131_storage_ptr","typeString":"struct Gear.StakerRewards"}},"id":83119,"nodeType":"ArrayTypeName","src":"8763:15:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StakerRewards_$83131_storage_$dyn_storage_ptr","typeString":"struct Gear.StakerRewards[]"}},"visibility":"internal"},{"constant":false,"id":83122,"mutability":"mutable","name":"totalAmount","nameLocation":"8809:11:169","nodeType":"VariableDeclaration","scope":83125,"src":"8801:19:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83121,"name":"uint256","nodeType":"ElementaryTypeName","src":"8801:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83124,"mutability":"mutable","name":"token","nameLocation":"8838:5:169","nodeType":"VariableDeclaration","scope":83125,"src":"8830:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83123,"name":"address","nodeType":"ElementaryTypeName","src":"8830:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"StakerRewardsCommitment","nameLocation":"8729:23:169","scope":84181,"visibility":"public"},{"id":83131,"nodeType":"StructDefinition","src":"8911:75:169","nodes":[],"canonicalName":"Gear.StakerRewards","documentation":{"id":83126,"nodeType":"StructuredDocumentation","src":"8856:50:169","text":" @dev Represents staker rewards."},"members":[{"constant":false,"id":83128,"mutability":"mutable","name":"vault","nameLocation":"8950:5:169","nodeType":"VariableDeclaration","scope":83131,"src":"8942:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83127,"name":"address","nodeType":"ElementaryTypeName","src":"8942:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83130,"mutability":"mutable","name":"amount","nameLocation":"8973:6:169","nodeType":"VariableDeclaration","scope":83131,"src":"8965:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83129,"name":"uint256","nodeType":"ElementaryTypeName","src":"8965:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"StakerRewards","nameLocation":"8918:13:169","scope":84181,"visibility":"public"},{"id":83139,"nodeType":"EnumDefinition","src":"9061:960:169","nodes":[],"canonicalName":"Gear.CodeState","documentation":{"id":83132,"nodeType":"StructuredDocumentation","src":"8992:64:169","text":" @dev Represents the state of code commitment."},"members":[{"documentation":{"id":83133,"nodeType":"StructuredDocumentation","src":"9086:260:169","text":" @dev The code commitment is in an unknown state (`CodeState.Unknown = 0 as uint8`).\n This is the default state for all code commitments,\n and it means that the code commitment has not been processed yet."},"id":83134,"name":"Unknown","nameLocation":"9355:7:169","nodeType":"EnumValue","src":"9355:7:169"},{"documentation":{"id":83135,"nodeType":"StructuredDocumentation","src":"9372:465:169","text":" @dev The code commitment has requested validation by user (`CodeState.ValidationRequested = 1 as uint8`).\n Users calls `IRouter(router).requestCodeValidation(bytes32 _codeId)` to request code validation and\n attaches sidecar to this transaction (the transaction is encoded in EIP-7594 format),\n then validators can validate the code commitment and set `CodeState.Validated` in case of success."},"id":83136,"name":"ValidationRequested","nameLocation":"9846:19:169","nodeType":"EnumValue","src":"9846:19:169"},{"documentation":{"id":83137,"nodeType":"StructuredDocumentation","src":"9875:122:169","text":" @dev The code commitment has been validated by validators (`CodeState.Validated = 2 as uint8`)."},"id":83138,"name":"Validated","nameLocation":"10006:9:169","nodeType":"EnumValue","src":"10006:9:169"}],"name":"CodeState","nameLocation":"9066:9:169"},{"id":83145,"nodeType":"StructDefinition","src":"10101:81:169","nodes":[],"canonicalName":"Gear.CommittedBatchInfo","documentation":{"id":83140,"nodeType":"StructuredDocumentation","src":"10027:69:169","text":" @dev Represents information about committed batch."},"members":[{"constant":false,"id":83142,"mutability":"mutable","name":"hash","nameLocation":"10145:4:169","nodeType":"VariableDeclaration","scope":83145,"src":"10137:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83141,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10137:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83144,"mutability":"mutable","name":"timestamp","nameLocation":"10166:9:169","nodeType":"VariableDeclaration","scope":83145,"src":"10159:16:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":83143,"name":"uint48","nodeType":"ElementaryTypeName","src":"10159:6:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"CommittedBatchInfo","nameLocation":"10108:18:169","scope":84181,"visibility":"public"},{"id":83151,"nodeType":"StructDefinition","src":"10249:92:169","nodes":[],"canonicalName":"Gear.ComputationSettings","documentation":{"id":83146,"nodeType":"StructuredDocumentation","src":"10188:56:169","text":" @dev Represents computation settings."},"members":[{"constant":false,"id":83148,"mutability":"mutable","name":"threshold","nameLocation":"10293:9:169","nodeType":"VariableDeclaration","scope":83151,"src":"10286:16:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":83147,"name":"uint64","nodeType":"ElementaryTypeName","src":"10286:6:169","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":83150,"mutability":"mutable","name":"wvaraPerSecond","nameLocation":"10320:14:169","nodeType":"VariableDeclaration","scope":83151,"src":"10312:22:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83149,"name":"uint128","nodeType":"ElementaryTypeName","src":"10312:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"ComputationSettings","nameLocation":"10256:19:169","scope":84181,"visibility":"public"},{"id":83159,"nodeType":"StructDefinition","src":"10419:102:169","nodes":[],"canonicalName":"Gear.GenesisBlockInfo","documentation":{"id":83152,"nodeType":"StructuredDocumentation","src":"10347:67:169","text":" @dev Represents information about genesis block."},"members":[{"constant":false,"id":83154,"mutability":"mutable","name":"hash","nameLocation":"10461:4:169","nodeType":"VariableDeclaration","scope":83159,"src":"10453:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83153,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10453:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83156,"mutability":"mutable","name":"number","nameLocation":"10482:6:169","nodeType":"VariableDeclaration","scope":83159,"src":"10475:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":83155,"name":"uint32","nodeType":"ElementaryTypeName","src":"10475:6:169","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":83158,"mutability":"mutable","name":"timestamp","nameLocation":"10505:9:169","nodeType":"VariableDeclaration","scope":83159,"src":"10498:16:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":83157,"name":"uint48","nodeType":"ElementaryTypeName","src":"10498:6:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"GenesisBlockInfo","nameLocation":"10426:16:169","scope":84181,"visibility":"public"},{"id":83180,"nodeType":"StructDefinition","src":"10575:1092:169","nodes":[],"canonicalName":"Gear.Message","documentation":{"id":83160,"nodeType":"StructuredDocumentation","src":"10527:43:169","text":" @dev Represents message."},"members":[{"constant":false,"id":83163,"mutability":"mutable","name":"id","nameLocation":"10700:2:169","nodeType":"VariableDeclaration","scope":83180,"src":"10692:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83162,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10692:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83166,"mutability":"mutable","name":"destination","nameLocation":"10896:11:169","nodeType":"VariableDeclaration","scope":83180,"src":"10888:19:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83165,"name":"address","nodeType":"ElementaryTypeName","src":"10888:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83169,"mutability":"mutable","name":"payload","nameLocation":"10991:7:169","nodeType":"VariableDeclaration","scope":83180,"src":"10985:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":83168,"name":"bytes","nodeType":"ElementaryTypeName","src":"10985:5:169","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":83172,"mutability":"mutable","name":"value","nameLocation":"11095:5:169","nodeType":"VariableDeclaration","scope":83180,"src":"11087:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83171,"name":"uint128","nodeType":"ElementaryTypeName","src":"11087:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83176,"mutability":"mutable","name":"replyDetails","nameLocation":"11343:12:169","nodeType":"VariableDeclaration","scope":83180,"src":"11330:25:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$83219_storage_ptr","typeString":"struct Gear.ReplyDetails"},"typeName":{"id":83175,"nodeType":"UserDefinedTypeName","pathNode":{"id":83174,"name":"ReplyDetails","nameLocations":["11330:12:169"],"nodeType":"IdentifierPath","referencedDeclaration":83219,"src":"11330:12:169"},"referencedDeclaration":83219,"src":"11330:12:169","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$83219_storage_ptr","typeString":"struct Gear.ReplyDetails"}},"visibility":"internal"},{"constant":false,"id":83179,"mutability":"mutable","name":"call","nameLocation":"11656:4:169","nodeType":"VariableDeclaration","scope":83180,"src":"11651:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83178,"name":"bool","nodeType":"ElementaryTypeName","src":"11651:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"Message","nameLocation":"10582:7:169","scope":84181,"visibility":"public"},{"id":83211,"nodeType":"StructDefinition","src":"11731:1505:169","nodes":[],"canonicalName":"Gear.ProtocolData","documentation":{"id":83181,"nodeType":"StructuredDocumentation","src":"11673:53:169","text":" @dev Represents the protocol data."},"members":[{"constant":false,"id":83187,"mutability":"mutable","name":"codes","nameLocation":"12005:5:169","nodeType":"VariableDeclaration","scope":83211,"src":"11975:35:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$83139_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"},"typeName":{"id":83186,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":83183,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11983:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"11975:29:169","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$83139_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":83185,"nodeType":"UserDefinedTypeName","pathNode":{"id":83184,"name":"CodeState","nameLocations":["11994:9:169"],"nodeType":"IdentifierPath","referencedDeclaration":83139,"src":"11994:9:169"},"referencedDeclaration":83139,"src":"11994:9:169","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83139","typeString":"enum Gear.CodeState"}}},"visibility":"internal"},{"constant":false,"id":83192,"mutability":"mutable","name":"programs","nameLocation":"12223:8:169","nodeType":"VariableDeclaration","scope":83211,"src":"12195:36:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"},"typeName":{"id":83191,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":83189,"name":"address","nodeType":"ElementaryTypeName","src":"12203:7:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"12195:27:169","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":83190,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12214:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"},{"constant":false,"id":83195,"mutability":"mutable","name":"programsCount","nameLocation":"12340:13:169","nodeType":"VariableDeclaration","scope":83211,"src":"12332:21:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83194,"name":"uint256","nodeType":"ElementaryTypeName","src":"12332:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83198,"mutability":"mutable","name":"validatedCodesCount","nameLocation":"12468:19:169","nodeType":"VariableDeclaration","scope":83211,"src":"12460:27:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83197,"name":"uint256","nodeType":"ElementaryTypeName","src":"12460:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83201,"mutability":"mutable","name":"maxValidators","nameLocation":"12586:13:169","nodeType":"VariableDeclaration","scope":83211,"src":"12579:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":83200,"name":"uint16","nodeType":"ElementaryTypeName","src":"12579:6:169","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":83204,"mutability":"mutable","name":"requestCodeValidationBaseFee","nameLocation":"12777:28:169","nodeType":"VariableDeclaration","scope":83211,"src":"12769:36:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83203,"name":"uint256","nodeType":"ElementaryTypeName","src":"12769:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83207,"mutability":"mutable","name":"requestCodeValidationExtraFee","nameLocation":"12993:29:169","nodeType":"VariableDeclaration","scope":83211,"src":"12985:37:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83206,"name":"uint256","nodeType":"ElementaryTypeName","src":"12985:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83210,"mutability":"mutable","name":"protocolVersion","nameLocation":"13214:15:169","nodeType":"VariableDeclaration","scope":83211,"src":"13206:23:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83209,"name":"uint256","nodeType":"ElementaryTypeName","src":"13206:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ProtocolData","nameLocation":"11738:12:169","scope":84181,"visibility":"public"},{"id":83219,"nodeType":"StructDefinition","src":"13302:564:169","nodes":[],"canonicalName":"Gear.ReplyDetails","documentation":{"id":83212,"nodeType":"StructuredDocumentation","src":"13242:55:169","text":" @dev Represents details about reply."},"members":[{"constant":false,"id":83215,"mutability":"mutable","name":"to","nameLocation":"13511:2:169","nodeType":"VariableDeclaration","scope":83219,"src":"13503:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83214,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13503:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83218,"mutability":"mutable","name":"code","nameLocation":"13855:4:169","nodeType":"VariableDeclaration","scope":83219,"src":"13848:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":83217,"name":"bytes4","nodeType":"ElementaryTypeName","src":"13848:6:169","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"name":"ReplyDetails","nameLocation":"13309:12:169","scope":84181,"visibility":"public"},{"id":83249,"nodeType":"StructDefinition","src":"14143:1608:169","nodes":[],"canonicalName":"Gear.StateTransition","documentation":{"id":83220,"nodeType":"StructuredDocumentation","src":"13872:266:169","text":" @dev Represents state transition of `Mirror`.\n Most important type in this, in Rust we use this type to mutate state of `Mirror` instances.\n (see `ethexe/common/src/gear.rs` for more details on how this type is used in Rust)."},"members":[{"constant":false,"id":83223,"mutability":"mutable","name":"actorId","nameLocation":"14370:7:169","nodeType":"VariableDeclaration","scope":83249,"src":"14362:15:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83222,"name":"address","nodeType":"ElementaryTypeName","src":"14362:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83226,"mutability":"mutable","name":"newStateHash","nameLocation":"14551:12:169","nodeType":"VariableDeclaration","scope":83249,"src":"14543:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83225,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14543:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83229,"mutability":"mutable","name":"exited","nameLocation":"14658:6:169","nodeType":"VariableDeclaration","scope":83249,"src":"14653:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83228,"name":"bool","nodeType":"ElementaryTypeName","src":"14653:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":83232,"mutability":"mutable","name":"inheritor","nameLocation":"14860:9:169","nodeType":"VariableDeclaration","scope":83249,"src":"14852:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83231,"name":"address","nodeType":"ElementaryTypeName","src":"14852:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83235,"mutability":"mutable","name":"valueToReceive","nameLocation":"15238:14:169","nodeType":"VariableDeclaration","scope":83249,"src":"15230:22:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83234,"name":"uint128","nodeType":"ElementaryTypeName","src":"15230:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83238,"mutability":"mutable","name":"valueToReceiveNegativeSign","nameLocation":"15534:26:169","nodeType":"VariableDeclaration","scope":83249,"src":"15529:31:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83237,"name":"bool","nodeType":"ElementaryTypeName","src":"15529:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":83243,"mutability":"mutable","name":"valueClaims","nameLocation":"15646:11:169","nodeType":"VariableDeclaration","scope":83249,"src":"15633:24:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$83289_storage_$dyn_storage_ptr","typeString":"struct Gear.ValueClaim[]"},"typeName":{"baseType":{"id":83241,"nodeType":"UserDefinedTypeName","pathNode":{"id":83240,"name":"ValueClaim","nameLocations":["15633:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":83289,"src":"15633:10:169"},"referencedDeclaration":83289,"src":"15633:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$83289_storage_ptr","typeString":"struct Gear.ValueClaim"}},"id":83242,"nodeType":"ArrayTypeName","src":"15633:12:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$83289_storage_$dyn_storage_ptr","typeString":"struct Gear.ValueClaim[]"}},"visibility":"internal"},{"constant":false,"id":83248,"mutability":"mutable","name":"messages","nameLocation":"15736:8:169","nodeType":"VariableDeclaration","scope":83249,"src":"15726:18:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$83180_storage_$dyn_storage_ptr","typeString":"struct Gear.Message[]"},"typeName":{"baseType":{"id":83246,"nodeType":"UserDefinedTypeName","pathNode":{"id":83245,"name":"Message","nameLocations":["15726:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":83180,"src":"15726:7:169"},"referencedDeclaration":83180,"src":"15726:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83180_storage_ptr","typeString":"struct Gear.Message"}},"id":83247,"nodeType":"ArrayTypeName","src":"15726:9:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$83180_storage_$dyn_storage_ptr","typeString":"struct Gear.Message[]"}},"visibility":"internal"}],"name":"StateTransition","nameLocation":"14150:15:169","scope":84181,"visibility":"public"},{"id":83257,"nodeType":"StructDefinition","src":"15811:104:169","nodes":[],"canonicalName":"Gear.Timelines","documentation":{"id":83250,"nodeType":"StructuredDocumentation","src":"15757:49:169","text":" @dev Represents the timelines."},"members":[{"constant":false,"id":83252,"mutability":"mutable","name":"era","nameLocation":"15846:3:169","nodeType":"VariableDeclaration","scope":83257,"src":"15838:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83251,"name":"uint256","nodeType":"ElementaryTypeName","src":"15838:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83254,"mutability":"mutable","name":"election","nameLocation":"15867:8:169","nodeType":"VariableDeclaration","scope":83257,"src":"15859:16:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83253,"name":"uint256","nodeType":"ElementaryTypeName","src":"15859:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83256,"mutability":"mutable","name":"validationDelay","nameLocation":"15893:15:169","nodeType":"VariableDeclaration","scope":83257,"src":"15885:23:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83255,"name":"uint256","nodeType":"ElementaryTypeName","src":"15885:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Timelines","nameLocation":"15818:9:169","scope":84181,"visibility":"public"},{"id":83269,"nodeType":"StructDefinition","src":"15985:171:169","nodes":[],"canonicalName":"Gear.ValidationSettings","documentation":{"id":83258,"nodeType":"StructuredDocumentation","src":"15921:59:169","text":" @dev Represents the validation settings."},"members":[{"constant":false,"id":83260,"mutability":"mutable","name":"thresholdNumerator","nameLocation":"16029:18:169","nodeType":"VariableDeclaration","scope":83269,"src":"16021:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83259,"name":"uint128","nodeType":"ElementaryTypeName","src":"16021:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83262,"mutability":"mutable","name":"thresholdDenominator","nameLocation":"16065:20:169","nodeType":"VariableDeclaration","scope":83269,"src":"16057:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83261,"name":"uint128","nodeType":"ElementaryTypeName","src":"16057:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83265,"mutability":"mutable","name":"validators0","nameLocation":"16106:11:169","nodeType":"VariableDeclaration","scope":83269,"src":"16095:22:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":83264,"nodeType":"UserDefinedTypeName","pathNode":{"id":83263,"name":"Validators","nameLocations":["16095:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":83007,"src":"16095:10:169"},"referencedDeclaration":83007,"src":"16095:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"},{"constant":false,"id":83268,"mutability":"mutable","name":"validators1","nameLocation":"16138:11:169","nodeType":"VariableDeclaration","scope":83269,"src":"16127:22:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":83267,"nodeType":"UserDefinedTypeName","pathNode":{"id":83266,"name":"Validators","nameLocations":["16127:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":83007,"src":"16127:10:169"},"referencedDeclaration":83007,"src":"16127:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"name":"ValidationSettings","nameLocation":"15992:18:169","scope":84181,"visibility":"public"},{"id":83281,"nodeType":"StructDefinition","src":"16234:183:169","nodes":[],"canonicalName":"Gear.ValidationSettingsView","documentation":{"id":83270,"nodeType":"StructuredDocumentation","src":"16162:67:169","text":" @dev Represents the view of validation settings."},"members":[{"constant":false,"id":83272,"mutability":"mutable","name":"thresholdNumerator","nameLocation":"16282:18:169","nodeType":"VariableDeclaration","scope":83281,"src":"16274:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83271,"name":"uint128","nodeType":"ElementaryTypeName","src":"16274:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83274,"mutability":"mutable","name":"thresholdDenominator","nameLocation":"16318:20:169","nodeType":"VariableDeclaration","scope":83281,"src":"16310:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83273,"name":"uint128","nodeType":"ElementaryTypeName","src":"16310:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83277,"mutability":"mutable","name":"validators0","nameLocation":"16363:11:169","nodeType":"VariableDeclaration","scope":83281,"src":"16348:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$83019_storage_ptr","typeString":"struct Gear.ValidatorsView"},"typeName":{"id":83276,"nodeType":"UserDefinedTypeName","pathNode":{"id":83275,"name":"ValidatorsView","nameLocations":["16348:14:169"],"nodeType":"IdentifierPath","referencedDeclaration":83019,"src":"16348:14:169"},"referencedDeclaration":83019,"src":"16348:14:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$83019_storage_ptr","typeString":"struct Gear.ValidatorsView"}},"visibility":"internal"},{"constant":false,"id":83280,"mutability":"mutable","name":"validators1","nameLocation":"16399:11:169","nodeType":"VariableDeclaration","scope":83281,"src":"16384:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$83019_storage_ptr","typeString":"struct Gear.ValidatorsView"},"typeName":{"id":83279,"nodeType":"UserDefinedTypeName","pathNode":{"id":83278,"name":"ValidatorsView","nameLocations":["16384:14:169"],"nodeType":"IdentifierPath","referencedDeclaration":83019,"src":"16384:14:169"},"referencedDeclaration":83019,"src":"16384:14:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$83019_storage_ptr","typeString":"struct Gear.ValidatorsView"}},"visibility":"internal"}],"name":"ValidationSettingsView","nameLocation":"16241:22:169","scope":84181,"visibility":"public"},{"id":83289,"nodeType":"StructDefinition","src":"16479:104:169","nodes":[],"canonicalName":"Gear.ValueClaim","documentation":{"id":83282,"nodeType":"StructuredDocumentation","src":"16423:51:169","text":" @dev Represents claim for value."},"members":[{"constant":false,"id":83284,"mutability":"mutable","name":"messageId","nameLocation":"16515:9:169","nodeType":"VariableDeclaration","scope":83289,"src":"16507:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83283,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16507:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83286,"mutability":"mutable","name":"destination","nameLocation":"16542:11:169","nodeType":"VariableDeclaration","scope":83289,"src":"16534:19:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83285,"name":"address","nodeType":"ElementaryTypeName","src":"16534:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83288,"mutability":"mutable","name":"value","nameLocation":"16571:5:169","nodeType":"VariableDeclaration","scope":83289,"src":"16563:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83287,"name":"uint128","nodeType":"ElementaryTypeName","src":"16563:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"ValueClaim","nameLocation":"16486:10:169","scope":84181,"visibility":"public"},{"id":83311,"nodeType":"StructDefinition","src":"16663:436:169","nodes":[],"canonicalName":"Gear.SymbioticContracts","documentation":{"id":83290,"nodeType":"StructuredDocumentation","src":"16589:69:169","text":" @dev Represents the symbiotic contracts addresses."},"members":[{"constant":false,"id":83292,"mutability":"mutable","name":"vaultRegistry","nameLocation":"16739:13:169","nodeType":"VariableDeclaration","scope":83311,"src":"16731:21:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83291,"name":"address","nodeType":"ElementaryTypeName","src":"16731:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83294,"mutability":"mutable","name":"operatorRegistry","nameLocation":"16770:16:169","nodeType":"VariableDeclaration","scope":83311,"src":"16762:24:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83293,"name":"address","nodeType":"ElementaryTypeName","src":"16762:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83296,"mutability":"mutable","name":"networkRegistry","nameLocation":"16804:15:169","nodeType":"VariableDeclaration","scope":83311,"src":"16796:23:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83295,"name":"address","nodeType":"ElementaryTypeName","src":"16796:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83298,"mutability":"mutable","name":"middlewareService","nameLocation":"16837:17:169","nodeType":"VariableDeclaration","scope":83311,"src":"16829:25:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83297,"name":"address","nodeType":"ElementaryTypeName","src":"16829:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83300,"mutability":"mutable","name":"networkOptIn","nameLocation":"16872:12:169","nodeType":"VariableDeclaration","scope":83311,"src":"16864:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83299,"name":"address","nodeType":"ElementaryTypeName","src":"16864:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83302,"mutability":"mutable","name":"stakerRewardsFactory","nameLocation":"16902:20:169","nodeType":"VariableDeclaration","scope":83311,"src":"16894:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83301,"name":"address","nodeType":"ElementaryTypeName","src":"16894:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83304,"mutability":"mutable","name":"operatorRewards","nameLocation":"16976:15:169","nodeType":"VariableDeclaration","scope":83311,"src":"16968:23:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83303,"name":"address","nodeType":"ElementaryTypeName","src":"16968:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83306,"mutability":"mutable","name":"roleSlashRequester","nameLocation":"17009:18:169","nodeType":"VariableDeclaration","scope":83311,"src":"17001:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83305,"name":"address","nodeType":"ElementaryTypeName","src":"17001:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83308,"mutability":"mutable","name":"roleSlashExecutor","nameLocation":"17045:17:169","nodeType":"VariableDeclaration","scope":83311,"src":"17037:25:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83307,"name":"address","nodeType":"ElementaryTypeName","src":"17037:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83310,"mutability":"mutable","name":"vetoResolver","nameLocation":"17080:12:169","nodeType":"VariableDeclaration","scope":83311,"src":"17072:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83309,"name":"address","nodeType":"ElementaryTypeName","src":"17072:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"SymbioticContracts","nameLocation":"16670:18:169","scope":84181,"visibility":"public"},{"id":83315,"nodeType":"EnumDefinition","src":"17172:55:169","nodes":[],"canonicalName":"Gear.SignatureType","documentation":{"id":83312,"nodeType":"StructuredDocumentation","src":"17105:62:169","text":" @dev Represents the type of signature used."},"members":[{"id":83313,"name":"FROST","nameLocation":"17201:5:169","nodeType":"EnumValue","src":"17201:5:169"},{"id":83314,"name":"ECDSA","nameLocation":"17216:5:169","nodeType":"EnumValue","src":"17216:5:169"}],"name":"SignatureType","nameLocation":"17177:13:169"},{"id":83337,"nodeType":"FunctionDefinition","src":"17517:260:169","nodes":[],"body":{"id":83336,"nodeType":"Block","src":"17678:99:169","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":83330,"name":"_transitionsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83318,"src":"17722:16:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83331,"name":"_head","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83320,"src":"17740:5:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83332,"name":"_lastAdvancedEthBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83322,"src":"17747:21:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":83328,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"17705:3:169","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17709:12:169","memberName":"encodePacked","nodeType":"MemberAccess","src":"17705:16:169","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":83333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17705:64:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":83327,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"17695:9:169","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":83334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17695:75:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83326,"id":83335,"nodeType":"Return","src":"17688:82:169"}]},"documentation":{"id":83316,"nodeType":"StructuredDocumentation","src":"17233:279:169","text":" @dev Computes the hash of `ChainCommitment`.\n @param _transitionsHash The hash of the transitions in the chain commitment.\n @param _head The head of the chain commitment.\n @param _lastAdvancedEthBlock The latest folded-in Ethereum block hash."},"implemented":true,"kind":"function","modifiers":[],"name":"chainCommitmentHash","nameLocation":"17526:19:169","parameters":{"id":83323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83318,"mutability":"mutable","name":"_transitionsHash","nameLocation":"17554:16:169","nodeType":"VariableDeclaration","scope":83337,"src":"17546:24:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83317,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17546:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83320,"mutability":"mutable","name":"_head","nameLocation":"17580:5:169","nodeType":"VariableDeclaration","scope":83337,"src":"17572:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83319,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17572:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83322,"mutability":"mutable","name":"_lastAdvancedEthBlock","nameLocation":"17595:21:169","nodeType":"VariableDeclaration","scope":83337,"src":"17587:29:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83321,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17587:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17545:72:169"},"returnParameters":{"id":83326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83337,"src":"17665:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83324,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17665:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17664:9:169"},"scope":84181,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83354,"nodeType":"FunctionDefinition","src":"17946:336:169","nodes":[],"body":{"id":83353,"nodeType":"Block","src":"18034:248:169","nodes":[],"statements":[{"assignments":[83348],"declarations":[{"constant":false,"id":83348,"mutability":"mutable","name":"_codeCommitmentHash","nameLocation":"18052:19:169","nodeType":"VariableDeclaration","scope":83353,"src":"18044:27:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83347,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18044:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":83349,"nodeType":"VariableDeclarationStatement","src":"18044:27:169"},{"AST":{"nativeSrc":"18106:134:169","nodeType":"YulBlock","src":"18106:134:169","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18127:4:169","nodeType":"YulLiteral","src":"18127:4:169","type":"","value":"0x00"},{"name":"codeId","nativeSrc":"18133:6:169","nodeType":"YulIdentifier","src":"18133:6:169"}],"functionName":{"name":"mstore","nativeSrc":"18120:6:169","nodeType":"YulIdentifier","src":"18120:6:169"},"nativeSrc":"18120:20:169","nodeType":"YulFunctionCall","src":"18120:20:169"},"nativeSrc":"18120:20:169","nodeType":"YulExpressionStatement","src":"18120:20:169"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18161:4:169","nodeType":"YulLiteral","src":"18161:4:169","type":"","value":"0x20"},{"name":"valid","nativeSrc":"18167:5:169","nodeType":"YulIdentifier","src":"18167:5:169"}],"functionName":{"name":"mstore8","nativeSrc":"18153:7:169","nodeType":"YulIdentifier","src":"18153:7:169"},"nativeSrc":"18153:20:169","nodeType":"YulFunctionCall","src":"18153:20:169"},"nativeSrc":"18153:20:169","nodeType":"YulExpressionStatement","src":"18153:20:169"},{"nativeSrc":"18186:44:169","nodeType":"YulAssignment","src":"18186:44:169","value":{"arguments":[{"kind":"number","nativeSrc":"18219:4:169","nodeType":"YulLiteral","src":"18219:4:169","type":"","value":"0x00"},{"kind":"number","nativeSrc":"18225:4:169","nodeType":"YulLiteral","src":"18225:4:169","type":"","value":"0x21"}],"functionName":{"name":"keccak256","nativeSrc":"18209:9:169","nodeType":"YulIdentifier","src":"18209:9:169"},"nativeSrc":"18209:21:169","nodeType":"YulFunctionCall","src":"18209:21:169"},"variableNames":[{"name":"_codeCommitmentHash","nativeSrc":"18186:19:169","nodeType":"YulIdentifier","src":"18186:19:169"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":83348,"isOffset":false,"isSlot":false,"src":"18186:19:169","valueSize":1},{"declaration":83340,"isOffset":false,"isSlot":false,"src":"18133:6:169","valueSize":1},{"declaration":83342,"isOffset":false,"isSlot":false,"src":"18167:5:169","valueSize":1}],"flags":["memory-safe"],"id":83350,"nodeType":"InlineAssembly","src":"18081:159:169"},{"expression":{"id":83351,"name":"_codeCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83348,"src":"18256:19:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83346,"id":83352,"nodeType":"Return","src":"18249:26:169"}]},"documentation":{"id":83338,"nodeType":"StructuredDocumentation","src":"17783:158:169","text":" @dev Computes the hash of `CodeCommitment`.\n @param codeId The ID of the code.\n @param valid The validation status of the code."},"implemented":true,"kind":"function","modifiers":[],"name":"codeCommitmentHash","nameLocation":"17955:18:169","parameters":{"id":83343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83340,"mutability":"mutable","name":"codeId","nameLocation":"17982:6:169","nodeType":"VariableDeclaration","scope":83354,"src":"17974:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83339,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17974:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83342,"mutability":"mutable","name":"valid","nameLocation":"17995:5:169","nodeType":"VariableDeclaration","scope":83354,"src":"17990:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83341,"name":"bool","nodeType":"ElementaryTypeName","src":"17990:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17973:28:169"},"returnParameters":{"id":83346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83345,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83354,"src":"18025:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83344,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18025:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"18024:9:169"},"scope":84181,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83376,"nodeType":"FunctionDefinition","src":"18559:273:169","nodes":[],"body":{"id":83375,"nodeType":"Block","src":"18727:105:169","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":83369,"name":"_operatorRewardsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83357,"src":"18771:20:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83370,"name":"_stakerRewardsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83359,"src":"18793:18:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83371,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83361,"src":"18813:10:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":83367,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"18754:3:169","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18758:12:169","memberName":"encodePacked","nodeType":"MemberAccess","src":"18754:16:169","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":83372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18754:70:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":83366,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"18744:9:169","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":83373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18744:81:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83365,"id":83374,"nodeType":"Return","src":"18737:88:169"}]},"documentation":{"id":83355,"nodeType":"StructuredDocumentation","src":"18288:266:169","text":" @dev Computes the hash of `RewardsCommitment`.\n @param _operatorRewardsHash The hash of the operator rewards.\n @param _stakerRewardsHash The hash of the staker rewards.\n @param _timestamp The timestamp for the rewards commitment."},"implemented":true,"kind":"function","modifiers":[],"name":"rewardsCommitmentHash","nameLocation":"18568:21:169","parameters":{"id":83362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83357,"mutability":"mutable","name":"_operatorRewardsHash","nameLocation":"18598:20:169","nodeType":"VariableDeclaration","scope":83376,"src":"18590:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83356,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18590:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83359,"mutability":"mutable","name":"_stakerRewardsHash","nameLocation":"18628:18:169","nodeType":"VariableDeclaration","scope":83376,"src":"18620:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83358,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18620:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83361,"mutability":"mutable","name":"_timestamp","nameLocation":"18655:10:169","nodeType":"VariableDeclaration","scope":83376,"src":"18648:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":83360,"name":"uint48","nodeType":"ElementaryTypeName","src":"18648:6:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"18589:77:169"},"returnParameters":{"id":83365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83376,"src":"18714:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83363,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18714:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"18713:9:169"},"scope":84181,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83404,"nodeType":"FunctionDefinition","src":"18963:425:169","nodes":[],"body":{"id":83403,"nodeType":"Block","src":"19074:314:169","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":83388,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83380,"src":"19148:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$83065_memory_ptr","typeString":"struct Gear.ValidatorsCommitment memory"}},"id":83389,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19159:22:169","memberName":"hasAggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":83054,"src":"19148:33:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"expression":{"id":83390,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83380,"src":"19199:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$83065_memory_ptr","typeString":"struct Gear.ValidatorsCommitment memory"}},"id":83391,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19210:19:169","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":83057,"src":"19199:30:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82986_memory_ptr","typeString":"struct Gear.AggregatedPublicKey memory"}},"id":83392,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19230:1:169","memberName":"x","nodeType":"MemberAccess","referencedDeclaration":82983,"src":"19199:32:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":83393,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83380,"src":"19249:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$83065_memory_ptr","typeString":"struct Gear.ValidatorsCommitment memory"}},"id":83394,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19260:19:169","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":83057,"src":"19249:30:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82986_memory_ptr","typeString":"struct Gear.AggregatedPublicKey memory"}},"id":83395,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19280:1:169","memberName":"y","nodeType":"MemberAccess","referencedDeclaration":82985,"src":"19249:32:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":83396,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83380,"src":"19299:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$83065_memory_ptr","typeString":"struct Gear.ValidatorsCommitment memory"}},"id":83397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19310:10:169","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":83062,"src":"19299:21:169","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"expression":{"id":83398,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83380,"src":"19338:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$83065_memory_ptr","typeString":"struct Gear.ValidatorsCommitment memory"}},"id":83399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19349:8:169","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":83064,"src":"19338:19:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":83386,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19114:3:169","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83387,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19118:12:169","memberName":"encodePacked","nodeType":"MemberAccess","src":"19114:16:169","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":83400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19114:257:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":83385,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"19091:9:169","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":83401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19091:290:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83384,"id":83402,"nodeType":"Return","src":"19084:297:169"}]},"documentation":{"id":83377,"nodeType":"StructuredDocumentation","src":"18838:120:169","text":" @dev Computes the hash of `ValidatorsCommitment`.\n @param commitment The validators commitment."},"implemented":true,"kind":"function","modifiers":[],"name":"validatorsCommitmentHash","nameLocation":"18972:24:169","parameters":{"id":83381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83380,"mutability":"mutable","name":"commitment","nameLocation":"19030:10:169","nodeType":"VariableDeclaration","scope":83404,"src":"18997:43:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$83065_memory_ptr","typeString":"struct Gear.ValidatorsCommitment"},"typeName":{"id":83379,"nodeType":"UserDefinedTypeName","pathNode":{"id":83378,"name":"Gear.ValidatorsCommitment","nameLocations":["18997:4:169","19002:20:169"],"nodeType":"IdentifierPath","referencedDeclaration":83065,"src":"18997:25:169"},"referencedDeclaration":83065,"src":"18997:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$83065_storage_ptr","typeString":"struct Gear.ValidatorsCommitment"}},"visibility":"internal"}],"src":"18996:45:169"},"returnParameters":{"id":83384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83383,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83404,"src":"19065:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83382,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19065:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19064:9:169"},"scope":84181,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83441,"nodeType":"FunctionDefinition","src":"20001:697:169","nodes":[],"body":{"id":83440,"nodeType":"Block","src":"20338:360:169","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":83429,"name":"_block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83407,"src":"20412:6:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83430,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83409,"src":"20436:10:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":83431,"name":"_prevCommittedBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83411,"src":"20464:19:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83432,"name":"_expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83413,"src":"20501:7:169","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":83433,"name":"_chainCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83415,"src":"20526:20:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83434,"name":"_codeCommitmentsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83417,"src":"20564:20:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83435,"name":"_rewardsCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83419,"src":"20602:22:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83436,"name":"_validatorsCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83421,"src":"20642:25:169","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_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":83427,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"20378:3:169","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20382:12:169","memberName":"encodePacked","nodeType":"MemberAccess","src":"20378:16:169","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":83437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20378:303:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":83426,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"20355:9:169","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":83438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20355:336:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83425,"id":83439,"nodeType":"Return","src":"20348:343:169"}]},"documentation":{"id":83405,"nodeType":"StructuredDocumentation","src":"19394:602:169","text":" @dev Computes the hash of `BatchCommitment`.\n @param _block The hash of the block.\n @param _timestamp The timestamp for the batch commitment.\n @param _prevCommittedBlock The hash of the previous committed block.\n @param _expiry The expiry time for the batch commitment.\n @param _chainCommitmentHash The hash of the chain commitment.\n @param _codeCommitmentsHash The hash of the code commitments.\n @param _rewardsCommitmentHash The hash of the rewards commitment.\n @param _validatorsCommitmentHash The hash of the validators commitment."},"implemented":true,"kind":"function","modifiers":[],"name":"batchCommitmentHash","nameLocation":"20010:19:169","parameters":{"id":83422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83407,"mutability":"mutable","name":"_block","nameLocation":"20047:6:169","nodeType":"VariableDeclaration","scope":83441,"src":"20039:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83406,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20039:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83409,"mutability":"mutable","name":"_timestamp","nameLocation":"20070:10:169","nodeType":"VariableDeclaration","scope":83441,"src":"20063:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":83408,"name":"uint48","nodeType":"ElementaryTypeName","src":"20063:6:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":83411,"mutability":"mutable","name":"_prevCommittedBlock","nameLocation":"20098:19:169","nodeType":"VariableDeclaration","scope":83441,"src":"20090:27:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83410,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20090:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83413,"mutability":"mutable","name":"_expiry","nameLocation":"20133:7:169","nodeType":"VariableDeclaration","scope":83441,"src":"20127:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":83412,"name":"uint8","nodeType":"ElementaryTypeName","src":"20127:5:169","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":83415,"mutability":"mutable","name":"_chainCommitmentHash","nameLocation":"20158:20:169","nodeType":"VariableDeclaration","scope":83441,"src":"20150:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83414,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20150:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83417,"mutability":"mutable","name":"_codeCommitmentsHash","nameLocation":"20196:20:169","nodeType":"VariableDeclaration","scope":83441,"src":"20188:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83416,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20188:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83419,"mutability":"mutable","name":"_rewardsCommitmentHash","nameLocation":"20234:22:169","nodeType":"VariableDeclaration","scope":83441,"src":"20226:30:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83418,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20226:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83421,"mutability":"mutable","name":"_validatorsCommitmentHash","nameLocation":"20274:25:169","nodeType":"VariableDeclaration","scope":83441,"src":"20266:33:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83420,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20266:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20029:276:169"},"returnParameters":{"id":83425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83424,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83441,"src":"20329:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83423,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20329:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20328:9:169"},"scope":84181,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83473,"nodeType":"FunctionDefinition","src":"20829:407:169","nodes":[],"body":{"id":83472,"nodeType":"Block","src":"20906:330:169","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":83453,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83445,"src":"20980:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83180_memory_ptr","typeString":"struct Gear.Message memory"}},"id":83454,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20988:2:169","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":83163,"src":"20980:10:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":83455,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83445,"src":"21008:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83180_memory_ptr","typeString":"struct Gear.Message memory"}},"id":83456,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21016:11:169","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":83166,"src":"21008:19:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":83457,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83445,"src":"21045:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83180_memory_ptr","typeString":"struct Gear.Message memory"}},"id":83458,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21053:7:169","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":83169,"src":"21045:15:169","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":83459,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83445,"src":"21078:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83180_memory_ptr","typeString":"struct Gear.Message memory"}},"id":83460,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21086:5:169","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83172,"src":"21078:13:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":83461,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83445,"src":"21109:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83180_memory_ptr","typeString":"struct Gear.Message memory"}},"id":83462,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21117:12:169","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":83176,"src":"21109:20:169","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$83219_memory_ptr","typeString":"struct Gear.ReplyDetails memory"}},"id":83463,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21130:2:169","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":83215,"src":"21109:23:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":83464,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83445,"src":"21150:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83180_memory_ptr","typeString":"struct Gear.Message memory"}},"id":83465,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21158:12:169","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":83176,"src":"21150:20:169","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$83219_memory_ptr","typeString":"struct Gear.ReplyDetails memory"}},"id":83466,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21171:4:169","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":83218,"src":"21150:25:169","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":83467,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83445,"src":"21193:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83180_memory_ptr","typeString":"struct Gear.Message memory"}},"id":83468,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21201:4:169","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":83179,"src":"21193:12:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":83451,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"20946:3:169","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20950:12:169","memberName":"encodePacked","nodeType":"MemberAccess","src":"20946:16:169","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":83469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20946:273:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":83450,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"20923:9:169","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":83470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20923:306:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83449,"id":83471,"nodeType":"Return","src":"20916:313:169"}]},"documentation":{"id":83442,"nodeType":"StructuredDocumentation","src":"20704:120:169","text":" @dev Computes the hash of `Message`.\n @param message The message for which to compute the hash."},"implemented":true,"kind":"function","modifiers":[],"name":"messageHash","nameLocation":"20838:11:169","parameters":{"id":83446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83445,"mutability":"mutable","name":"message","nameLocation":"20865:7:169","nodeType":"VariableDeclaration","scope":83473,"src":"20850:22:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83180_memory_ptr","typeString":"struct Gear.Message"},"typeName":{"id":83444,"nodeType":"UserDefinedTypeName","pathNode":{"id":83443,"name":"Message","nameLocations":["20850:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":83180,"src":"20850:7:169"},"referencedDeclaration":83180,"src":"20850:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83180_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"20849:24:169"},"returnParameters":{"id":83449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83448,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83473,"src":"20897:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83447,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20897:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20896:9:169"},"scope":84181,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83495,"nodeType":"FunctionDefinition","src":"21443:199:169","nodes":[],"body":{"id":83494,"nodeType":"Block","src":"21557:85:169","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":83488,"name":"_messageId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83476,"src":"21601:10:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83489,"name":"_destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83478,"src":"21613:12:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":83490,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83480,"src":"21627:6:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":83486,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"21584:3:169","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21588:12:169","memberName":"encodePacked","nodeType":"MemberAccess","src":"21584:16:169","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":83491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21584:50:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":83485,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"21574:9:169","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":83492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21574:61:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83484,"id":83493,"nodeType":"Return","src":"21567:68:169"}]},"documentation":{"id":83474,"nodeType":"StructuredDocumentation","src":"21242:196:169","text":" @dev Computes the hash of `ValueClaim`.\n @param _messageId The message ID.\n @param _destination The destination address.\n @param _value The value of the claim."},"implemented":true,"kind":"function","modifiers":[],"name":"valueClaimHash","nameLocation":"21452:14:169","parameters":{"id":83481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83476,"mutability":"mutable","name":"_messageId","nameLocation":"21475:10:169","nodeType":"VariableDeclaration","scope":83495,"src":"21467:18:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83475,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21467:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83478,"mutability":"mutable","name":"_destination","nameLocation":"21495:12:169","nodeType":"VariableDeclaration","scope":83495,"src":"21487:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83477,"name":"address","nodeType":"ElementaryTypeName","src":"21487:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83480,"mutability":"mutable","name":"_value","nameLocation":"21517:6:169","nodeType":"VariableDeclaration","scope":83495,"src":"21509:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83479,"name":"uint128","nodeType":"ElementaryTypeName","src":"21509:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"21466:58:169"},"returnParameters":{"id":83484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83483,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83495,"src":"21548:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83482,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21548:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"21547:9:169"},"scope":84181,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83532,"nodeType":"FunctionDefinition","src":"22146:646:169","nodes":[],"body":{"id":83531,"nodeType":"Block","src":"22456:336:169","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":83520,"name":"actor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83498,"src":"22530:5:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":83521,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83500,"src":"22553:12:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83522,"name":"exited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83502,"src":"22583:6:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":83523,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83504,"src":"22607:9:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":83524,"name":"valueToReceive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83506,"src":"22634:14:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":83525,"name":"valueToReceiveNegativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83508,"src":"22666:26:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":83526,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83510,"src":"22710:15:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83527,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83512,"src":"22743:18:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":83518,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"22496:3:169","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22500:12:169","memberName":"encodePacked","nodeType":"MemberAccess","src":"22496:16:169","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":83528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22496:279:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":83517,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"22473:9:169","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":83529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22473:312:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83516,"id":83530,"nodeType":"Return","src":"22466:319:169"}]},"documentation":{"id":83496,"nodeType":"StructuredDocumentation","src":"21648:493:169","text":" @dev Computes the hash of `StateTransition`.\n @param actor The actor address.\n @param newStateHash The hash of the new state.\n @param exited The exit status.\n @param inheritor The inheritor address.\n @param valueToReceive The value to receive.\n @param valueToReceiveNegativeSign The sign of the value to receive.\n @param valueClaimsHash The hash of the value claims.\n @param messagesHashesHash The hash of the messages hashes."},"implemented":true,"kind":"function","modifiers":[],"name":"stateTransitionHash","nameLocation":"22155:19:169","parameters":{"id":83513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83498,"mutability":"mutable","name":"actor","nameLocation":"22192:5:169","nodeType":"VariableDeclaration","scope":83532,"src":"22184:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83497,"name":"address","nodeType":"ElementaryTypeName","src":"22184:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83500,"mutability":"mutable","name":"newStateHash","nameLocation":"22215:12:169","nodeType":"VariableDeclaration","scope":83532,"src":"22207:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83499,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22207:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83502,"mutability":"mutable","name":"exited","nameLocation":"22242:6:169","nodeType":"VariableDeclaration","scope":83532,"src":"22237:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83501,"name":"bool","nodeType":"ElementaryTypeName","src":"22237:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":83504,"mutability":"mutable","name":"inheritor","nameLocation":"22266:9:169","nodeType":"VariableDeclaration","scope":83532,"src":"22258:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83503,"name":"address","nodeType":"ElementaryTypeName","src":"22258:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83506,"mutability":"mutable","name":"valueToReceive","nameLocation":"22293:14:169","nodeType":"VariableDeclaration","scope":83532,"src":"22285:22:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83505,"name":"uint128","nodeType":"ElementaryTypeName","src":"22285:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83508,"mutability":"mutable","name":"valueToReceiveNegativeSign","nameLocation":"22322:26:169","nodeType":"VariableDeclaration","scope":83532,"src":"22317:31:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83507,"name":"bool","nodeType":"ElementaryTypeName","src":"22317:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":83510,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"22366:15:169","nodeType":"VariableDeclaration","scope":83532,"src":"22358:23:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83509,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22358:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83512,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"22399:18:169","nodeType":"VariableDeclaration","scope":83532,"src":"22391:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83511,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22391:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"22174:249:169"},"returnParameters":{"id":83516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83515,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83532,"src":"22447:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83514,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22447:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"22446:9:169"},"scope":84181,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83597,"nodeType":"FunctionDefinition","src":"23066:532:169","nodes":[],"body":{"id":83596,"nodeType":"Block","src":"23165:433:169","nodes":[],"statements":[{"assignments":[83543],"declarations":[{"constant":false,"id":83543,"mutability":"mutable","name":"start","nameLocation":"23183:5:169","nodeType":"VariableDeclaration","scope":83596,"src":"23175:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83542,"name":"uint256","nodeType":"ElementaryTypeName","src":"23175:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83548,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83544,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"23191:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23197:6:169","memberName":"number","nodeType":"MemberAccess","src":"23191:12:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":83546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23206:1:169","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23191:16:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23175:32:169"},{"assignments":[83550],"declarations":[{"constant":false,"id":83550,"mutability":"mutable","name":"end","nameLocation":"23225:3:169","nodeType":"VariableDeclaration","scope":83596,"src":"23217:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83549,"name":"uint256","nodeType":"ElementaryTypeName","src":"23217:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83561,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83551,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83537,"src":"23231:6:169","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":83552,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"23241:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23247:6:169","memberName":"number","nodeType":"MemberAccess","src":"23241:12:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23231:22:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83556,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"23260:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23266:6:169","memberName":"number","nodeType":"MemberAccess","src":"23260:12:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":83558,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83537,"src":"23275:6:169","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"23260:21:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"23231:50:169","trueExpression":{"hexValue":"30","id":83555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23256:1:169","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23217:64:169"},{"body":{"id":83592,"nodeType":"Block","src":"23326:243:169","statements":[{"assignments":[83570],"declarations":[{"constant":false,"id":83570,"mutability":"mutable","name":"ret","nameLocation":"23348:3:169","nodeType":"VariableDeclaration","scope":83592,"src":"23340:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83569,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23340:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":83574,"initialValue":{"arguments":[{"id":83572,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83563,"src":"23364:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83571,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"23354:9:169","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":83573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23354:12:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"23340:26:169"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83575,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83570,"src":"23384:3:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":83576,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83535,"src":"23391:4:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"23384:11:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83581,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83570,"src":"23451:3:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":83582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23458:1:169","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23451:8:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83586,"nodeType":"IfStatement","src":"23447:52:169","trueBody":{"id":83585,"nodeType":"Block","src":"23461:38:169","statements":[{"id":83584,"nodeType":"Break","src":"23479:5:169"}]}},"id":83587,"nodeType":"IfStatement","src":"23380:119:169","trueBody":{"id":83580,"nodeType":"Block","src":"23397:44:169","statements":[{"expression":{"hexValue":"74727565","id":83578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23422:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":83541,"id":83579,"nodeType":"Return","src":"23415:11:169"}]}},{"id":83591,"nodeType":"UncheckedBlock","src":"23513:46:169","statements":[{"expression":{"id":83589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23541:3:169","subExpression":{"id":83588,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83563,"src":"23541:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83590,"nodeType":"ExpressionStatement","src":"23541:3:169"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83566,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83563,"src":"23315:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":83567,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83550,"src":"23320:3:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23315:8:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83593,"initializationExpression":{"assignments":[83563],"declarations":[{"constant":false,"id":83563,"mutability":"mutable","name":"i","nameLocation":"23304:1:169","nodeType":"VariableDeclaration","scope":83593,"src":"23296:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83562,"name":"uint256","nodeType":"ElementaryTypeName","src":"23296:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83565,"initialValue":{"id":83564,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83543,"src":"23308:5:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23296:17:169"},"isSimpleCounterLoop":false,"nodeType":"ForStatement","src":"23291:278:169"},{"expression":{"hexValue":"66616c7365","id":83594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23586:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":83541,"id":83595,"nodeType":"Return","src":"23579:12:169"}]},"documentation":{"id":83533,"nodeType":"StructuredDocumentation","src":"22798:263:169","text":" @dev Checks if block is predecessor of the current block.\n @param hash The hash of the block to check.\n @param expiry The expiry time for the block.\n @return isPredecessor `true` if the block is predecessor, `false` otherwise."},"implemented":true,"kind":"function","modifiers":[],"name":"blockIsPredecessor","nameLocation":"23075:18:169","parameters":{"id":83538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83535,"mutability":"mutable","name":"hash","nameLocation":"23102:4:169","nodeType":"VariableDeclaration","scope":83597,"src":"23094:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83534,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23094:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83537,"mutability":"mutable","name":"expiry","nameLocation":"23114:6:169","nodeType":"VariableDeclaration","scope":83597,"src":"23108:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":83536,"name":"uint8","nodeType":"ElementaryTypeName","src":"23108:5:169","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"23093:28:169"},"returnParameters":{"id":83541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83540,"mutability":"mutable","name":"isPredecessor","nameLocation":"23150:13:169","nodeType":"VariableDeclaration","scope":83597,"src":"23145:18:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83539,"name":"bool","nodeType":"ElementaryTypeName","src":"23145:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"23144:20:169"},"scope":84181,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":83610,"nodeType":"FunctionDefinition","src":"23743:222:169","nodes":[],"body":{"id":83609,"nodeType":"Block","src":"23852:113:169","nodes":[],"statements":[{"expression":{"arguments":[{"id":83605,"name":"COMPUTATION_THRESHOLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82947,"src":"23901:21:169","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":83606,"name":"WVARA_PER_SECOND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82959,"src":"23940:16:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83604,"name":"ComputationSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83151,"src":"23869:19:169","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ComputationSettings_$83151_storage_ptr_$","typeString":"type(struct Gear.ComputationSettings storage pointer)"}},"id":83607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["23890:9:169","23924:14:169"],"names":["threshold","wvaraPerSecond"],"nodeType":"FunctionCall","src":"23869:89:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$83151_memory_ptr","typeString":"struct Gear.ComputationSettings memory"}},"functionReturnParameters":83603,"id":83608,"nodeType":"Return","src":"23862:96:169"}]},"documentation":{"id":83598,"nodeType":"StructuredDocumentation","src":"23604:134:169","text":" @dev Returns the default computation settings.\n @return computationSettings The default computation settings."},"implemented":true,"kind":"function","modifiers":[],"name":"defaultComputationSettings","nameLocation":"23752:26:169","parameters":{"id":83599,"nodeType":"ParameterList","parameters":[],"src":"23778:2:169"},"returnParameters":{"id":83603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83602,"mutability":"mutable","name":"computationSettings","nameLocation":"23831:19:169","nodeType":"VariableDeclaration","scope":83610,"src":"23804:46:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$83151_memory_ptr","typeString":"struct Gear.ComputationSettings"},"typeName":{"id":83601,"nodeType":"UserDefinedTypeName","pathNode":{"id":83600,"name":"ComputationSettings","nameLocations":["23804:19:169"],"nodeType":"IdentifierPath","referencedDeclaration":83151,"src":"23804:19:169"},"referencedDeclaration":83151,"src":"23804:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$83151_storage_ptr","typeString":"struct Gear.ComputationSettings"}},"visibility":"internal"}],"src":"23803:48:169"},"scope":84181,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83633,"nodeType":"FunctionDefinition","src":"24091:229:169","nodes":[],"body":{"id":83632,"nodeType":"Block","src":"24178:142:169","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":83620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24239:1:169","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":83619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24231:7:169","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":83618,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24231:7:169","typeDescriptions":{}}},"id":83621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24231:10:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"expression":{"id":83624,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"24269:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24275:6:169","memberName":"number","nodeType":"MemberAccess","src":"24269:12:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":83622,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55635,"src":"24251:8:169","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$55635_$","typeString":"type(library SafeCast)"}},"id":83623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24260:8:169","memberName":"toUint32","nodeType":"MemberAccess","referencedDeclaration":54681,"src":"24251:17:169","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$","typeString":"function (uint256) pure returns (uint32)"}},"id":83626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24251:31:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":83627,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"24295:4:169","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$60343_$","typeString":"type(library Time)"}},"id":83628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24300:9:169","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":60091,"src":"24295:14:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":83629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24295:16:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":83617,"name":"GenesisBlockInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83159,"src":"24207:16:169","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_GenesisBlockInfo_$83159_storage_ptr_$","typeString":"type(struct Gear.GenesisBlockInfo storage pointer)"}},"id":83630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["24225:4:169","24243:6:169","24284:9:169"],"names":["hash","number","timestamp"],"nodeType":"FunctionCall","src":"24207:106:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83159_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"functionReturnParameters":83616,"id":83631,"nodeType":"Return","src":"24188:125:169"}]},"documentation":{"id":83611,"nodeType":"StructuredDocumentation","src":"23971:115:169","text":" @dev Creates new genesis block info.\n @return genesisBlockInfo The new genesis block info."},"implemented":true,"kind":"function","modifiers":[],"name":"newGenesis","nameLocation":"24100:10:169","parameters":{"id":83612,"nodeType":"ParameterList","parameters":[],"src":"24110:2:169"},"returnParameters":{"id":83616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83615,"mutability":"mutable","name":"genesisBlockInfo","nameLocation":"24160:16:169","nodeType":"VariableDeclaration","scope":83633,"src":"24136:40:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83159_memory_ptr","typeString":"struct Gear.GenesisBlockInfo"},"typeName":{"id":83614,"nodeType":"UserDefinedTypeName","pathNode":{"id":83613,"name":"GenesisBlockInfo","nameLocations":["24136:16:169"],"nodeType":"IdentifierPath","referencedDeclaration":83159,"src":"24136:16:169"},"referencedDeclaration":83159,"src":"24136:16:169","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83159_storage_ptr","typeString":"struct Gear.GenesisBlockInfo"}},"visibility":"internal"}],"src":"24135:42:169"},"scope":84181,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":83883,"nodeType":"FunctionDefinition","src":"24811:3813:169","nodes":[],"body":{"id":83882,"nodeType":"Block","src":"25074:3550:169","nodes":[],"statements":[{"assignments":[83655],"declarations":[{"constant":false,"id":83655,"mutability":"mutable","name":"eraStarted","nameLocation":"25146:10:169","nodeType":"VariableDeclaration","scope":83882,"src":"25138:18:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83654,"name":"uint256","nodeType":"ElementaryTypeName","src":"25138:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83661,"initialValue":{"arguments":[{"id":83657,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83637,"src":"25172:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":83658,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"25180:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25186:9:169","memberName":"timestamp","nodeType":"MemberAccess","src":"25180:15:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83656,"name":"eraStartedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84116,"src":"25159:12:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74493_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (uint256)"}},"id":83660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25159:37:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25138:58:169"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83662,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83649,"src":"25210:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":83663,"name":"eraStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83655,"src":"25215:10:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25210:15:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83665,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"25229:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25235:9:169","memberName":"timestamp","nodeType":"MemberAccess","src":"25229:15:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83667,"name":"eraStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83655,"src":"25247:10:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"expression":{"id":83668,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83637,"src":"25260:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83669,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25267:9:169","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74488,"src":"25260:16:169","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83257_storage","typeString":"struct Gear.Timelines storage ref"}},"id":83670,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25277:15:169","memberName":"validationDelay","nodeType":"MemberAccess","referencedDeclaration":83256,"src":"25260:32:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25247:45:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25229:63:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25210:82:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":83715,"nodeType":"Block","src":"25653:229:169","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83698,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83649,"src":"25675:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":83699,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"25681:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25687:9:169","memberName":"timestamp","nodeType":"MemberAccess","src":"25681:15:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25675:21:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83702,"name":"TimestampInFuture","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82968,"src":"25698:17:169","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25698:19:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83697,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"25667:7:169","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25667:51:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83705,"nodeType":"ExpressionStatement","src":"25667:51:169"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83706,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83649,"src":"25737:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":83707,"name":"eraStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83655,"src":"25742:10:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25737:15:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83714,"nodeType":"IfStatement","src":"25733:69:169","trueBody":{"id":83713,"nodeType":"Block","src":"25754:48:169","statements":[{"expression":{"id":83711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83709,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83649,"src":"25772:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":83710,"name":"eraStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83655,"src":"25777:10:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25772:15:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83712,"nodeType":"ExpressionStatement","src":"25772:15:169"}]}}]},"id":83716,"nodeType":"IfStatement","src":"25206:676:169","trueBody":{"id":83696,"nodeType":"Block","src":"25294:353:169","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83675,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83649,"src":"25316:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"expression":{"id":83676,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83637,"src":"25322:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83677,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25329:12:169","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74468,"src":"25322:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83159_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":83678,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25342:9:169","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":83158,"src":"25322:29:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"25316:35:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83680,"name":"ValidationBeforeGenesis","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82962,"src":"25353:23:169","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25353:25:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83674,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"25308:7:169","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25308:71:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83683,"nodeType":"ExpressionStatement","src":"25308:71:169"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83685,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83649,"src":"25401:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"expression":{"id":83686,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83637,"src":"25406:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83687,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25413:9:169","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74488,"src":"25406:16:169","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83257_storage","typeString":"struct Gear.Timelines storage ref"}},"id":83688,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25423:3:169","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":83252,"src":"25406:20:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25401:25:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":83690,"name":"eraStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83655,"src":"25430:10:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25401:39:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83692,"name":"TimestampOlderThanPreviousEra","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82965,"src":"25442:29:169","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25442:31:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83684,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"25393:7:169","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25393:81:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83695,"nodeType":"ExpressionStatement","src":"25393:81:169"}]}},{"assignments":[83719],"declarations":[{"constant":false,"id":83719,"mutability":"mutable","name":"validators","nameLocation":"25963:10:169","nodeType":"VariableDeclaration","scope":83882,"src":"25944:29:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":83718,"nodeType":"UserDefinedTypeName","pathNode":{"id":83717,"name":"Validators","nameLocations":["25944:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":83007,"src":"25944:10:169"},"referencedDeclaration":83007,"src":"25944:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":83724,"initialValue":{"arguments":[{"id":83721,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83637,"src":"25989:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":83722,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83649,"src":"25997:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83720,"name":"validatorsAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83955,"src":"25976:12:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74493_storage_ptr_$_t_uint256_$returns$_t_struct$_Validators_$83007_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (struct Gear.Validators storage pointer)"}},"id":83723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25976:24:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"25944:56:169"},{"assignments":[83726],"declarations":[{"constant":false,"id":83726,"mutability":"mutable","name":"_messageHash","nameLocation":"26018:12:169","nodeType":"VariableDeclaration","scope":83882,"src":"26010:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83725,"name":"bytes32","nodeType":"ElementaryTypeName","src":"26010:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":83734,"initialValue":{"arguments":[{"id":83732,"name":"_dataHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83641,"src":"26079:9:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":83729,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26041:4:169","typeDescriptions":{"typeIdentifier":"t_contract$_Gear_$84181","typeString":"library Gear"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Gear_$84181","typeString":"library Gear"}],"id":83728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26033:7:169","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":83727,"name":"address","nodeType":"ElementaryTypeName","src":"26033:7:169","typeDescriptions":{}}},"id":83730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26033:13:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":83731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26047:31:169","memberName":"toDataWithIntendedValidatorHash","nodeType":"MemberAccess","referencedDeclaration":52224,"src":"26033:45:169","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_address_$","typeString":"function (address,bytes32) pure returns (bytes32)"}},"id":83733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26033:56:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"26010:79:169"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SignatureType_$83315","typeString":"enum Gear.SignatureType"},"id":83738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83735,"name":"_signatureType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83644,"src":"26104:14:169","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$83315","typeString":"enum Gear.SignatureType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":83736,"name":"SignatureType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83315,"src":"26122:13:169","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SignatureType_$83315_$","typeString":"type(enum Gear.SignatureType)"}},"id":83737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26136:5:169","memberName":"FROST","nodeType":"MemberAccess","referencedDeclaration":83313,"src":"26122:19:169","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$83315","typeString":"enum Gear.SignatureType"}},"src":"26104:37:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SignatureType_$83315","typeString":"enum Gear.SignatureType"},"id":83791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83788,"name":"_signatureType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83644,"src":"27300:14:169","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$83315","typeString":"enum Gear.SignatureType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":83789,"name":"SignatureType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83315,"src":"27318:13:169","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SignatureType_$83315_$","typeString":"type(enum Gear.SignatureType)"}},"id":83790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27332:5:169","memberName":"ECDSA","nodeType":"MemberAccess","referencedDeclaration":83314,"src":"27318:19:169","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$83315","typeString":"enum Gear.SignatureType"}},"src":"27300:37:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83878,"nodeType":"IfStatement","src":"27296:1299:169","trueBody":{"id":83877,"nodeType":"Block","src":"27339:1256:169","statements":[{"assignments":[83793],"declarations":[{"constant":false,"id":83793,"mutability":"mutable","name":"threshold","nameLocation":"27361:9:169","nodeType":"VariableDeclaration","scope":83877,"src":"27353:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83792,"name":"uint256","nodeType":"ElementaryTypeName","src":"27353:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83805,"initialValue":{"arguments":[{"expression":{"expression":{"id":83795,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83719,"src":"27410:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":83796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27421:4:169","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":83003,"src":"27410:15:169","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":83797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27426:6:169","memberName":"length","nodeType":"MemberAccess","src":"27410:22:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":83798,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83637,"src":"27450:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83799,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27457:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74480,"src":"27450:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83269_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83800,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27476:18:169","memberName":"thresholdNumerator","nodeType":"MemberAccess","referencedDeclaration":83260,"src":"27450:44:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":83801,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83637,"src":"27512:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83802,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27519:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74480,"src":"27512:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83269_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27538:20:169","memberName":"thresholdDenominator","nodeType":"MemberAccess","referencedDeclaration":83262,"src":"27512:46:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83794,"name":"validatorsThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84068,"src":"27373:19:169","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint128_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint256,uint128,uint128) pure returns (uint256)"}},"id":83804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27373:199:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"27353:219:169"},{"assignments":[83807],"declarations":[{"constant":false,"id":83807,"mutability":"mutable","name":"validSignatures","nameLocation":"27595:15:169","nodeType":"VariableDeclaration","scope":83877,"src":"27587:23:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83806,"name":"uint256","nodeType":"ElementaryTypeName","src":"27587:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83809,"initialValue":{"hexValue":"30","id":83808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27613:1:169","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"27587:27:169"},{"body":{"id":83873,"nodeType":"Block","src":"27678:880:169","statements":[{"assignments":[83822],"declarations":[{"constant":false,"id":83822,"mutability":"mutable","name":"signature","nameLocation":"27711:9:169","nodeType":"VariableDeclaration","scope":83873,"src":"27696:24:169","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":83821,"name":"bytes","nodeType":"ElementaryTypeName","src":"27696:5:169","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":83826,"initialValue":{"baseExpression":{"id":83823,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83647,"src":"27723:11:169","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":83825,"indexExpression":{"id":83824,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83811,"src":"27735:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27723:14:169","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"27696:41:169"},{"assignments":[83828],"declarations":[{"constant":false,"id":83828,"mutability":"mutable","name":"validator","nameLocation":"27764:9:169","nodeType":"VariableDeclaration","scope":83873,"src":"27756:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83827,"name":"address","nodeType":"ElementaryTypeName","src":"27756:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":83833,"initialValue":{"arguments":[{"id":83831,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83822,"src":"27797:9:169","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":83829,"name":"_messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83726,"src":"27776:12:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":83830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27789:7:169","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":50794,"src":"27776:20:169","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address)"}},"id":83832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27776:31:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"27756:51:169"},{"condition":{"baseExpression":{"expression":{"id":83834,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83719,"src":"27830:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":83835,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27841:3:169","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":82999,"src":"27830:14:169","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":83837,"indexExpression":{"id":83836,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83828,"src":"27845:9:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27830:25:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83872,"nodeType":"IfStatement","src":"27826:718:169","trueBody":{"id":83871,"nodeType":"Block","src":"27857:687:169","statements":[{"assignments":[83840],"declarations":[{"constant":false,"id":83840,"mutability":"mutable","name":"transientStorageValidatorsSlot","nameLocation":"28082:30:169","nodeType":"VariableDeclaration","scope":83871,"src":"28074:38:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83839,"name":"bytes32","nodeType":"ElementaryTypeName","src":"28074:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev SECURITY:\n We use transient storage to prevent multiple signatures from the same validator.","id":83845,"initialValue":{"arguments":[{"id":83843,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83828,"src":"28152:9:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":83841,"name":"routerTransientStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83639,"src":"28115:22:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":83842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28138:13:169","memberName":"deriveMapping","nodeType":"MemberAccess","referencedDeclaration":48892,"src":"28115:36:169","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_address_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,address) pure returns (bytes32)"}},"id":83844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28115:47:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"28074:88:169"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":83846,"name":"transientStorageValidatorsSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83840,"src":"28189:30:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":83847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28220:9:169","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":50528,"src":"28189:40:169","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlot_$50513_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (TransientSlot.BooleanSlot)"}},"id":83848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28189:42:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$50513","typeString":"TransientSlot.BooleanSlot"}},"id":83849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28232:5:169","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":50612,"src":"28189:48:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_BooleanSlot_$50513_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_BooleanSlot_$50513_$","typeString":"function (TransientSlot.BooleanSlot) view returns (bool)"}},"id":83850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28189:50:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":83861,"nodeType":"Block","src":"28304:104:169","statements":[{"expression":{"arguments":[{"hexValue":"74727565","id":83858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28380:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":83853,"name":"transientStorageValidatorsSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83840,"src":"28330:30:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":83855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28361:9:169","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":50528,"src":"28330:40:169","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlot_$50513_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (TransientSlot.BooleanSlot)"}},"id":83856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28330:42:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$50513","typeString":"TransientSlot.BooleanSlot"}},"id":83857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28373:6:169","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":50623,"src":"28330:49:169","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlot_$50513_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlot_$50513_$","typeString":"function (TransientSlot.BooleanSlot,bool)"}},"id":83859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28330:55:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83860,"nodeType":"ExpressionStatement","src":"28330:55:169"}]},"id":83862,"nodeType":"IfStatement","src":"28185:223:169","trueBody":{"id":83852,"nodeType":"Block","src":"28241:57:169","statements":[{"id":83851,"nodeType":"Continue","src":"28267:8:169"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"28434:17:169","subExpression":{"id":83863,"name":"validSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83807,"src":"28436:15:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":83865,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83793,"src":"28455:9:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28434:30:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83870,"nodeType":"IfStatement","src":"28430:96:169","trueBody":{"id":83869,"nodeType":"Block","src":"28466:60:169","statements":[{"expression":{"hexValue":"74727565","id":83867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28499:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":83653,"id":83868,"nodeType":"Return","src":"28492:11:169"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83814,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83811,"src":"27649:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":83815,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83647,"src":"27653:11:169","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":83816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27665:6:169","memberName":"length","nodeType":"MemberAccess","src":"27653:18:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27649:22:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83874,"initializationExpression":{"assignments":[83811],"declarations":[{"constant":false,"id":83811,"mutability":"mutable","name":"i","nameLocation":"27642:1:169","nodeType":"VariableDeclaration","scope":83874,"src":"27634:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83810,"name":"uint256","nodeType":"ElementaryTypeName","src":"27634:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83813,"initialValue":{"hexValue":"30","id":83812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27646:1:169","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"27634:13:169"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":83819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"27673:3:169","subExpression":{"id":83818,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83811,"src":"27673:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83820,"nodeType":"ExpressionStatement","src":"27673:3:169"},"nodeType":"ForStatement","src":"27629:929:169"},{"expression":{"hexValue":"66616c7365","id":83875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28579:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":83653,"id":83876,"nodeType":"Return","src":"28572:12:169"}]}},"id":83879,"nodeType":"IfStatement","src":"26100:2495:169","trueBody":{"id":83787,"nodeType":"Block","src":"26143:1147:169","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83740,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83647,"src":"26165:11:169","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":83741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26177:6:169","memberName":"length","nodeType":"MemberAccess","src":"26165:18:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":83742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26187:1:169","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"26165:23:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83744,"name":"InvalidFrostSignatureCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82971,"src":"26190:26:169","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26190:28:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83739,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26157:7:169","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26157:62:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83747,"nodeType":"ExpressionStatement","src":"26157:62:169"},{"assignments":[83749],"declarations":[{"constant":false,"id":83749,"mutability":"mutable","name":"_signature","nameLocation":"26247:10:169","nodeType":"VariableDeclaration","scope":83787,"src":"26234:23:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":83748,"name":"bytes","nodeType":"ElementaryTypeName","src":"26234:5:169","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":83753,"initialValue":{"baseExpression":{"id":83750,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83647,"src":"26260:11:169","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":83752,"indexExpression":{"hexValue":"30","id":83751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26272:1:169","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26260:14:169","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"26234:40:169"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83755,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83749,"src":"26296:10:169","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":83756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26307:6:169","memberName":"length","nodeType":"MemberAccess","src":"26296:17:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3936","id":83757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26317:2:169","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"26296:23:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83759,"name":"InvalidFrostSignatureLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82974,"src":"26321:27:169","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26321:29:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83754,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26288:7:169","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26288:63:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83762,"nodeType":"ExpressionStatement","src":"26288:63:169"},{"assignments":[83764],"declarations":[{"constant":false,"id":83764,"mutability":"mutable","name":"_signatureCommitmentX","nameLocation":"26374:21:169","nodeType":"VariableDeclaration","scope":83787,"src":"26366:29:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83763,"name":"uint256","nodeType":"ElementaryTypeName","src":"26366:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83765,"nodeType":"VariableDeclarationStatement","src":"26366:29:169"},{"assignments":[83767],"declarations":[{"constant":false,"id":83767,"mutability":"mutable","name":"_signatureCommitmentY","nameLocation":"26417:21:169","nodeType":"VariableDeclaration","scope":83787,"src":"26409:29:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83766,"name":"uint256","nodeType":"ElementaryTypeName","src":"26409:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83768,"nodeType":"VariableDeclarationStatement","src":"26409:29:169"},{"assignments":[83770],"declarations":[{"constant":false,"id":83770,"mutability":"mutable","name":"_signatureZ","nameLocation":"26460:11:169","nodeType":"VariableDeclaration","scope":83787,"src":"26452:19:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83769,"name":"uint256","nodeType":"ElementaryTypeName","src":"26452:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83771,"nodeType":"VariableDeclarationStatement","src":"26452:19:169"},{"AST":{"nativeSrc":"26511:215:169","nodeType":"YulBlock","src":"26511:215:169","statements":[{"nativeSrc":"26529:53:169","nodeType":"YulAssignment","src":"26529:53:169","value":{"arguments":[{"arguments":[{"name":"_signature","nativeSrc":"26564:10:169","nodeType":"YulIdentifier","src":"26564:10:169"},{"kind":"number","nativeSrc":"26576:4:169","nodeType":"YulLiteral","src":"26576:4:169","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"26560:3:169","nodeType":"YulIdentifier","src":"26560:3:169"},"nativeSrc":"26560:21:169","nodeType":"YulFunctionCall","src":"26560:21:169"}],"functionName":{"name":"mload","nativeSrc":"26554:5:169","nodeType":"YulIdentifier","src":"26554:5:169"},"nativeSrc":"26554:28:169","nodeType":"YulFunctionCall","src":"26554:28:169"},"variableNames":[{"name":"_signatureCommitmentX","nativeSrc":"26529:21:169","nodeType":"YulIdentifier","src":"26529:21:169"}]},{"nativeSrc":"26599:53:169","nodeType":"YulAssignment","src":"26599:53:169","value":{"arguments":[{"arguments":[{"name":"_signature","nativeSrc":"26634:10:169","nodeType":"YulIdentifier","src":"26634:10:169"},{"kind":"number","nativeSrc":"26646:4:169","nodeType":"YulLiteral","src":"26646:4:169","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"26630:3:169","nodeType":"YulIdentifier","src":"26630:3:169"},"nativeSrc":"26630:21:169","nodeType":"YulFunctionCall","src":"26630:21:169"}],"functionName":{"name":"mload","nativeSrc":"26624:5:169","nodeType":"YulIdentifier","src":"26624:5:169"},"nativeSrc":"26624:28:169","nodeType":"YulFunctionCall","src":"26624:28:169"},"variableNames":[{"name":"_signatureCommitmentY","nativeSrc":"26599:21:169","nodeType":"YulIdentifier","src":"26599:21:169"}]},{"nativeSrc":"26669:43:169","nodeType":"YulAssignment","src":"26669:43:169","value":{"arguments":[{"arguments":[{"name":"_signature","nativeSrc":"26694:10:169","nodeType":"YulIdentifier","src":"26694:10:169"},{"kind":"number","nativeSrc":"26706:4:169","nodeType":"YulLiteral","src":"26706:4:169","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"26690:3:169","nodeType":"YulIdentifier","src":"26690:3:169"},"nativeSrc":"26690:21:169","nodeType":"YulFunctionCall","src":"26690:21:169"}],"functionName":{"name":"mload","nativeSrc":"26684:5:169","nodeType":"YulIdentifier","src":"26684:5:169"},"nativeSrc":"26684:28:169","nodeType":"YulFunctionCall","src":"26684:28:169"},"variableNames":[{"name":"_signatureZ","nativeSrc":"26669:11:169","nodeType":"YulIdentifier","src":"26669:11:169"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":83749,"isOffset":false,"isSlot":false,"src":"26564:10:169","valueSize":1},{"declaration":83749,"isOffset":false,"isSlot":false,"src":"26634:10:169","valueSize":1},{"declaration":83749,"isOffset":false,"isSlot":false,"src":"26694:10:169","valueSize":1},{"declaration":83764,"isOffset":false,"isSlot":false,"src":"26529:21:169","valueSize":1},{"declaration":83767,"isOffset":false,"isSlot":false,"src":"26599:21:169","valueSize":1},{"declaration":83770,"isOffset":false,"isSlot":false,"src":"26669:11:169","valueSize":1}],"flags":["memory-safe"],"id":83772,"nodeType":"InlineAssembly","src":"26486:240:169"},{"documentation":" @dev SECURITY: `FROST.isValidPublicKey(validators.aggregatedPublicKey.x, validators.aggregatedPublicKey.y)` is not called here,\n because it is already checked in `Router._resetValidators(...)`.","expression":{"arguments":[{"expression":{"expression":{"id":83775,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83719,"src":"27046:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":83776,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27057:19:169","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":82991,"src":"27046:30:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82986_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},"id":83777,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27077:1:169","memberName":"x","nodeType":"MemberAccess","referencedDeclaration":82983,"src":"27046:32:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":83778,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83719,"src":"27096:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":83779,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27107:19:169","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":82991,"src":"27096:30:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82986_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},"id":83780,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27127:1:169","memberName":"y","nodeType":"MemberAccess","referencedDeclaration":82985,"src":"27096:32:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83781,"name":"_signatureCommitmentX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83764,"src":"27146:21:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83782,"name":"_signatureCommitmentY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83767,"src":"27185:21:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83783,"name":"_signatureZ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83770,"src":"27224:11:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83784,"name":"_messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83726,"src":"27253:12:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":83773,"name":"FROST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40965,"src":"27007:5:169","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FROST_$40965_$","typeString":"type(library FROST)"}},"id":83774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27013:15:169","memberName":"verifySignature","nodeType":"MemberAccess","referencedDeclaration":40964,"src":"27007:21:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$_t_bool_$","typeString":"function (uint256,uint256,uint256,uint256,uint256,bytes32) view returns (bool)"}},"id":83785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27007:272:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":83653,"id":83786,"nodeType":"Return","src":"27000:279:169"}]}},{"expression":{"hexValue":"66616c7365","id":83880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28612:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":83653,"id":83881,"nodeType":"Return","src":"28605:12:169"}]},"documentation":{"id":83634,"nodeType":"StructuredDocumentation","src":"24326:480:169","text":" @dev Validates signatures of the given data hash at the given timestamp.\n @param router The router storage.\n @param routerTransientStorage The router transient storage slot for this validation.\n @param _dataHash The hash of the data to validate signatures for.\n @param _signatureType The type of signatures to validate.\n @param _signatures The signatures to validate.\n @param ts The timestamp at which to validate signatures."},"implemented":true,"kind":"function","modifiers":[],"name":"validateSignaturesAt","nameLocation":"24820:20:169","parameters":{"id":83650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83637,"mutability":"mutable","name":"router","nameLocation":"24874:6:169","nodeType":"VariableDeclaration","scope":83883,"src":"24850:30:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":83636,"nodeType":"UserDefinedTypeName","pathNode":{"id":83635,"name":"IRouter.Storage","nameLocations":["24850:7:169","24858:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":74493,"src":"24850:15:169"},"referencedDeclaration":74493,"src":"24850:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":83639,"mutability":"mutable","name":"routerTransientStorage","nameLocation":"24898:22:169","nodeType":"VariableDeclaration","scope":83883,"src":"24890:30:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83638,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24890:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83641,"mutability":"mutable","name":"_dataHash","nameLocation":"24938:9:169","nodeType":"VariableDeclaration","scope":83883,"src":"24930:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83640,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24930:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83644,"mutability":"mutable","name":"_signatureType","nameLocation":"24971:14:169","nodeType":"VariableDeclaration","scope":83883,"src":"24957:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$83315","typeString":"enum Gear.SignatureType"},"typeName":{"id":83643,"nodeType":"UserDefinedTypeName","pathNode":{"id":83642,"name":"SignatureType","nameLocations":["24957:13:169"],"nodeType":"IdentifierPath","referencedDeclaration":83315,"src":"24957:13:169"},"referencedDeclaration":83315,"src":"24957:13:169","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$83315","typeString":"enum Gear.SignatureType"}},"visibility":"internal"},{"constant":false,"id":83647,"mutability":"mutable","name":"_signatures","nameLocation":"25012:11:169","nodeType":"VariableDeclaration","scope":83883,"src":"24995:28:169","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":83645,"name":"bytes","nodeType":"ElementaryTypeName","src":"24995:5:169","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":83646,"nodeType":"ArrayTypeName","src":"24995:7:169","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":83649,"mutability":"mutable","name":"ts","nameLocation":"25041:2:169","nodeType":"VariableDeclaration","scope":83883,"src":"25033:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83648,"name":"uint256","nodeType":"ElementaryTypeName","src":"25033:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24840:209:169"},"returnParameters":{"id":83653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83652,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83883,"src":"25068:4:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83651,"name":"bool","nodeType":"ElementaryTypeName","src":"25068:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25067:6:169"},"scope":84181,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":83900,"nodeType":"FunctionDefinition","src":"28743:166:169","nodes":[],"body":{"id":83899,"nodeType":"Block","src":"28848:61:169","nodes":[],"statements":[{"expression":{"arguments":[{"id":83894,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83887,"src":"28878:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":83895,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"28886:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28892:9:169","memberName":"timestamp","nodeType":"MemberAccess","src":"28886:15:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83893,"name":"validatorsAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83955,"src":"28865:12:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74493_storage_ptr_$_t_uint256_$returns$_t_struct$_Validators_$83007_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (struct Gear.Validators storage pointer)"}},"id":83897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28865:37:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"functionReturnParameters":83892,"id":83898,"nodeType":"Return","src":"28858:44:169"}]},"documentation":{"id":83884,"nodeType":"StructuredDocumentation","src":"28630:108:169","text":" @dev Returns the validators for the current era.\n @param router The router storage."},"implemented":true,"kind":"function","modifiers":[],"name":"currentEraValidators","nameLocation":"28752:20:169","parameters":{"id":83888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83887,"mutability":"mutable","name":"router","nameLocation":"28797:6:169","nodeType":"VariableDeclaration","scope":83900,"src":"28773:30:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":83886,"nodeType":"UserDefinedTypeName","pathNode":{"id":83885,"name":"IRouter.Storage","nameLocations":["28773:7:169","28781:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":74493,"src":"28773:15:169"},"referencedDeclaration":74493,"src":"28773:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"28772:32:169"},"returnParameters":{"id":83892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83891,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83900,"src":"28828:18:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":83890,"nodeType":"UserDefinedTypeName","pathNode":{"id":83889,"name":"Validators","nameLocations":["28828:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":83007,"src":"28828:10:169"},"referencedDeclaration":83007,"src":"28828:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"src":"28827:20:169"},"scope":84181,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":83927,"nodeType":"FunctionDefinition","src":"29115:322:169","nodes":[],"body":{"id":83926,"nodeType":"Block","src":"29221:216:169","nodes":[],"statements":[{"condition":{"arguments":[{"id":83911,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83904,"src":"29261:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":83912,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"29269:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29275:9:169","memberName":"timestamp","nodeType":"MemberAccess","src":"29269:15:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83910,"name":"validatorsStoredInSlot1At","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84022,"src":"29235:25:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74493_storage_ptr_$_t_uint256_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (bool)"}},"id":83914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29235:50:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":83924,"nodeType":"Block","src":"29362:69:169","statements":[{"expression":{"expression":{"expression":{"id":83920,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83904,"src":"29383:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83921,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29390:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74480,"src":"29383:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83269_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83922,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29409:11:169","memberName":"validators1","nodeType":"MemberAccess","referencedDeclaration":83268,"src":"29383:37:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage","typeString":"struct Gear.Validators storage ref"}},"functionReturnParameters":83909,"id":83923,"nodeType":"Return","src":"29376:44:169"}]},"id":83925,"nodeType":"IfStatement","src":"29231:200:169","trueBody":{"id":83919,"nodeType":"Block","src":"29287:69:169","statements":[{"expression":{"expression":{"expression":{"id":83915,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83904,"src":"29308:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83916,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29315:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74480,"src":"29308:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83269_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83917,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29334:11:169","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":83265,"src":"29308:37:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage","typeString":"struct Gear.Validators storage ref"}},"functionReturnParameters":83909,"id":83918,"nodeType":"Return","src":"29301:44:169"}]}}]},"documentation":{"id":83901,"nodeType":"StructuredDocumentation","src":"28915:195:169","text":" @dev Returns previous era validators, if there is no previous era,\n then returns free validators slot, which must be zeroed.\n @param router The router storage."},"implemented":true,"kind":"function","modifiers":[],"name":"previousEraValidators","nameLocation":"29124:21:169","parameters":{"id":83905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83904,"mutability":"mutable","name":"router","nameLocation":"29170:6:169","nodeType":"VariableDeclaration","scope":83927,"src":"29146:30:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":83903,"nodeType":"UserDefinedTypeName","pathNode":{"id":83902,"name":"IRouter.Storage","nameLocations":["29146:7:169","29154:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":74493,"src":"29146:15:169"},"referencedDeclaration":74493,"src":"29146:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"29145:32:169"},"returnParameters":{"id":83909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83908,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83927,"src":"29201:18:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":83907,"nodeType":"UserDefinedTypeName","pathNode":{"id":83906,"name":"Validators","nameLocations":["29201:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":83007,"src":"29201:10:169"},"referencedDeclaration":83007,"src":"29201:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"src":"29200:20:169"},"scope":84181,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":83955,"nodeType":"FunctionDefinition","src":"29574:312:169","nodes":[],"body":{"id":83954,"nodeType":"Block","src":"29683:203:169","nodes":[],"statements":[{"condition":{"arguments":[{"id":83940,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83931,"src":"29723:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":83941,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83933,"src":"29731:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83939,"name":"validatorsStoredInSlot1At","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84022,"src":"29697:25:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74493_storage_ptr_$_t_uint256_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (bool)"}},"id":83942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29697:37:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":83952,"nodeType":"Block","src":"29811:69:169","statements":[{"expression":{"expression":{"expression":{"id":83948,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83931,"src":"29832:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83949,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29839:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74480,"src":"29832:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83269_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83950,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29858:11:169","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":83265,"src":"29832:37:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage","typeString":"struct Gear.Validators storage ref"}},"functionReturnParameters":83938,"id":83951,"nodeType":"Return","src":"29825:44:169"}]},"id":83953,"nodeType":"IfStatement","src":"29693:187:169","trueBody":{"id":83947,"nodeType":"Block","src":"29736:69:169","statements":[{"expression":{"expression":{"expression":{"id":83943,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83931,"src":"29757:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83944,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29764:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74480,"src":"29757:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83269_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83945,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29783:11:169","memberName":"validators1","nodeType":"MemberAccess","referencedDeclaration":83268,"src":"29757:37:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage","typeString":"struct Gear.Validators storage ref"}},"functionReturnParameters":83938,"id":83946,"nodeType":"Return","src":"29750:44:169"}]}}]},"documentation":{"id":83928,"nodeType":"StructuredDocumentation","src":"29443:126:169","text":" @dev Returns validators at the given timestamp.\n @param ts Timestamp for which to get the validators."},"implemented":true,"kind":"function","modifiers":[],"name":"validatorsAt","nameLocation":"29583:12:169","parameters":{"id":83934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83931,"mutability":"mutable","name":"router","nameLocation":"29620:6:169","nodeType":"VariableDeclaration","scope":83955,"src":"29596:30:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":83930,"nodeType":"UserDefinedTypeName","pathNode":{"id":83929,"name":"IRouter.Storage","nameLocations":["29596:7:169","29604:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":74493,"src":"29596:15:169"},"referencedDeclaration":74493,"src":"29596:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":83933,"mutability":"mutable","name":"ts","nameLocation":"29636:2:169","nodeType":"VariableDeclaration","scope":83955,"src":"29628:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83932,"name":"uint256","nodeType":"ElementaryTypeName","src":"29628:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29595:44:169"},"returnParameters":{"id":83938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83937,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83955,"src":"29663:18:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":83936,"nodeType":"UserDefinedTypeName","pathNode":{"id":83935,"name":"Validators","nameLocations":["29663:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":83007,"src":"29663:10:169"},"referencedDeclaration":83007,"src":"29663:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"src":"29662:20:169"},"scope":84181,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":84022,"nodeType":"FunctionDefinition","src":"30293:863:169","nodes":[],"body":{"id":84021,"nodeType":"Block","src":"30437:719:169","nodes":[],"statements":[{"assignments":[83967],"declarations":[{"constant":false,"id":83967,"mutability":"mutable","name":"ts0","nameLocation":"30455:3:169","nodeType":"VariableDeclaration","scope":84021,"src":"30447:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83966,"name":"uint256","nodeType":"ElementaryTypeName","src":"30447:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83972,"initialValue":{"expression":{"expression":{"expression":{"id":83968,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83959,"src":"30461:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83969,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30468:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74480,"src":"30461:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83269_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83970,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30487:11:169","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":83265,"src":"30461:37:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage","typeString":"struct Gear.Validators storage ref"}},"id":83971,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30499:16:169","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":83006,"src":"30461:54:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30447:68:169"},{"assignments":[83974],"declarations":[{"constant":false,"id":83974,"mutability":"mutable","name":"ts1","nameLocation":"30533:3:169","nodeType":"VariableDeclaration","scope":84021,"src":"30525:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83973,"name":"uint256","nodeType":"ElementaryTypeName","src":"30525:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83979,"initialValue":{"expression":{"expression":{"expression":{"id":83975,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83959,"src":"30539:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83976,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30546:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74480,"src":"30539:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83269_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83977,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30565:11:169","memberName":"validators1","nodeType":"MemberAccess","referencedDeclaration":83268,"src":"30539:37:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage","typeString":"struct Gear.Validators storage ref"}},"id":83978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30577:16:169","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":83006,"src":"30539:54:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30525:68:169"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83981,"name":"ts0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83967,"src":"30667:3:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":83982,"name":"ts1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83974,"src":"30674:3:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30667:10:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83984,"name":"ErasTimestampMustNotBeEqual","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82977,"src":"30679:27:169","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30679:29:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83980,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"30659:7:169","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30659:50:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83987,"nodeType":"ExpressionStatement","src":"30659:50:169"},{"assignments":[83989],"declarations":[{"constant":false,"id":83989,"mutability":"mutable","name":"ts1Greater","nameLocation":"30725:10:169","nodeType":"VariableDeclaration","scope":84021,"src":"30720:15:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83988,"name":"bool","nodeType":"ElementaryTypeName","src":"30720:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":83993,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83990,"name":"ts0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83967,"src":"30738:3:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":83991,"name":"ts1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83974,"src":"30744:3:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30738:9:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"30720:27:169"},{"assignments":[83995],"declarations":[{"constant":false,"id":83995,"mutability":"mutable","name":"tsGe0","nameLocation":"30762:5:169","nodeType":"VariableDeclaration","scope":84021,"src":"30757:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83994,"name":"bool","nodeType":"ElementaryTypeName","src":"30757:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":83999,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83996,"name":"ts0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83967,"src":"30770:3:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":83997,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83961,"src":"30777:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30770:9:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"30757:22:169"},{"assignments":[84001],"declarations":[{"constant":false,"id":84001,"mutability":"mutable","name":"tsGe1","nameLocation":"30794:5:169","nodeType":"VariableDeclaration","scope":84021,"src":"30789:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":84000,"name":"bool","nodeType":"ElementaryTypeName","src":"30789:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":84005,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84002,"name":"ts1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83974,"src":"30802:3:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":84003,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83961,"src":"30809:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30802:9:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"30789:22:169"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":84009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84007,"name":"tsGe0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83995,"src":"30903:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":84008,"name":"tsGe1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84001,"src":"30912:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30903:14:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":84010,"name":"ValidatorsNotFoundForTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82980,"src":"30919:30:169","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":84011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30919:32:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":84006,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"30895:7:169","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":84012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30895:57:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84013,"nodeType":"ExpressionStatement","src":"30895:57:169"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":84019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84014,"name":"ts1Greater","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83989,"src":"31119:10:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":84017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84015,"name":"tsGe0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83995,"src":"31134:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":84016,"name":"tsGe1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84001,"src":"31143:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31134:14:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":84018,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31133:16:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31119:30:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":83965,"id":84020,"nodeType":"Return","src":"31112:37:169"}]},"documentation":{"id":83956,"nodeType":"StructuredDocumentation","src":"29892:396:169","text":" @dev Returns `true` if validators at `ts` are stored in `router.validationSettings.validators1`.\n `false` means that current era validators are stored in `router.validationSettings.validators0`.\n @param ts Timestamp for which to check the validators slot.\n @return isSlot1 Whether validators at `ts` are stored in `router.validationSettings.validators1`."},"implemented":true,"kind":"function","modifiers":[],"name":"validatorsStoredInSlot1At","nameLocation":"30302:25:169","parameters":{"id":83962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83959,"mutability":"mutable","name":"router","nameLocation":"30352:6:169","nodeType":"VariableDeclaration","scope":84022,"src":"30328:30:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":83958,"nodeType":"UserDefinedTypeName","pathNode":{"id":83957,"name":"IRouter.Storage","nameLocations":["30328:7:169","30336:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":74493,"src":"30328:15:169"},"referencedDeclaration":74493,"src":"30328:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":83961,"mutability":"mutable","name":"ts","nameLocation":"30368:2:169","nodeType":"VariableDeclaration","scope":84022,"src":"30360:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83960,"name":"uint256","nodeType":"ElementaryTypeName","src":"30360:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30327:44:169"},"returnParameters":{"id":83965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83964,"mutability":"mutable","name":"isSlot1","nameLocation":"30424:7:169","nodeType":"VariableDeclaration","scope":84022,"src":"30419:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83963,"name":"bool","nodeType":"ElementaryTypeName","src":"30419:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30418:14:169"},"scope":84181,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":84068,"nodeType":"FunctionDefinition","src":"31658:456:169","nodes":[],"body":{"id":84067,"nodeType":"Block","src":"31841:273:169","nodes":[],"statements":[{"assignments":[84035],"declarations":[{"constant":false,"id":84035,"mutability":"mutable","name":"a","nameLocation":"31859:1:169","nodeType":"VariableDeclaration","scope":84067,"src":"31851:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84034,"name":"uint256","nodeType":"ElementaryTypeName","src":"31851:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":84036,"nodeType":"VariableDeclarationStatement","src":"31851:9:169"},{"id":84043,"nodeType":"UncheckedBlock","src":"31870:76:169","statements":[{"expression":{"id":84041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":84037,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84035,"src":"31894:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84038,"name":"validatorsAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84025,"src":"31898:16:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":84039,"name":"thresholdNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84027,"src":"31917:18:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"31898:37:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31894:41:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":84042,"nodeType":"ExpressionStatement","src":"31894:41:169"}]},{"assignments":[84045],"declarations":[{"constant":false,"id":84045,"mutability":"mutable","name":"d","nameLocation":"31963:1:169","nodeType":"VariableDeclaration","scope":84067,"src":"31955:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84044,"name":"uint256","nodeType":"ElementaryTypeName","src":"31955:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":84049,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84046,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84035,"src":"31967:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":84047,"name":"thresholdDenominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84029,"src":"31971:20:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"31967:24:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31955:36:169"},{"assignments":[84051],"declarations":[{"constant":false,"id":84051,"mutability":"mutable","name":"r","nameLocation":"32009:1:169","nodeType":"VariableDeclaration","scope":84067,"src":"32001:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84050,"name":"uint256","nodeType":"ElementaryTypeName","src":"32001:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":84055,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84052,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84035,"src":"32013:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":84053,"name":"thresholdDenominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84029,"src":"32017:20:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"32013:24:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"32001:36:169"},{"id":84066,"nodeType":"UncheckedBlock","src":"32047:61:169","statements":[{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84056,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84051,"src":"32079:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":84057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32083:1:169","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"32079:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":84059,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"32078:7:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":84063,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84045,"src":"32096:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":84064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"32078:19:169","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84060,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84045,"src":"32088:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":84061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32092:1:169","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"32088:5:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":84033,"id":84065,"nodeType":"Return","src":"32071:26:169"}]}]},"documentation":{"id":84023,"nodeType":"StructuredDocumentation","src":"31162:491:169","text":" @dev Calculates the threshold number of valid signatures required.\n The formula is:\n - `(validatorsAmount * thresholdNumerator).div_ceil(thresholdDenominator)`\n @param validatorsAmount The total number of validators.\n @param thresholdNumerator The numerator of the threshold fraction.\n @param thresholdDenominator The denominator of the threshold fraction.\n @return threshold The threshold number of valid signatures required."},"implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"31667:19:169","parameters":{"id":84030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84025,"mutability":"mutable","name":"validatorsAmount","nameLocation":"31695:16:169","nodeType":"VariableDeclaration","scope":84068,"src":"31687:24:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84024,"name":"uint256","nodeType":"ElementaryTypeName","src":"31687:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":84027,"mutability":"mutable","name":"thresholdNumerator","nameLocation":"31721:18:169","nodeType":"VariableDeclaration","scope":84068,"src":"31713:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":84026,"name":"uint128","nodeType":"ElementaryTypeName","src":"31713:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":84029,"mutability":"mutable","name":"thresholdDenominator","nameLocation":"31749:20:169","nodeType":"VariableDeclaration","scope":84068,"src":"31741:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":84028,"name":"uint128","nodeType":"ElementaryTypeName","src":"31741:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"31686:84:169"},"returnParameters":{"id":84033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84032,"mutability":"mutable","name":"threshold","nameLocation":"31826:9:169","nodeType":"VariableDeclaration","scope":84068,"src":"31818:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84031,"name":"uint256","nodeType":"ElementaryTypeName","src":"31818:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31817:19:169"},"scope":84181,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":84091,"nodeType":"FunctionDefinition","src":"32299:179:169","nodes":[],"body":{"id":84090,"nodeType":"Block","src":"32395:83:169","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84079,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84074,"src":"32413:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":84080,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84072,"src":"32418:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84081,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32425:12:169","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74468,"src":"32418:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83159_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":84082,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32438:9:169","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":83158,"src":"32418:29:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"32413:34:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":84084,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"32412:36:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"expression":{"id":84085,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84072,"src":"32451:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84086,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32458:9:169","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74488,"src":"32451:16:169","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83257_storage","typeString":"struct Gear.Timelines storage ref"}},"id":84087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32468:3:169","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":83252,"src":"32451:20:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32412:59:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":84078,"id":84089,"nodeType":"Return","src":"32405:66:169"}]},"documentation":{"id":84069,"nodeType":"StructuredDocumentation","src":"32120:174:169","text":" @dev Returns the era index for the given timestamp.\n @param router The router storage.\n @param ts The timestamp for which to get the era index."},"implemented":true,"kind":"function","modifiers":[],"name":"eraIndexAt","nameLocation":"32308:10:169","parameters":{"id":84075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84072,"mutability":"mutable","name":"router","nameLocation":"32343:6:169","nodeType":"VariableDeclaration","scope":84091,"src":"32319:30:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":84071,"nodeType":"UserDefinedTypeName","pathNode":{"id":84070,"name":"IRouter.Storage","nameLocations":["32319:7:169","32327:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":74493,"src":"32319:15:169"},"referencedDeclaration":74493,"src":"32319:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":84074,"mutability":"mutable","name":"ts","nameLocation":"32359:2:169","nodeType":"VariableDeclaration","scope":84091,"src":"32351:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84073,"name":"uint256","nodeType":"ElementaryTypeName","src":"32351:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32318:44:169"},"returnParameters":{"id":84078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84077,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84091,"src":"32386:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84076,"name":"uint256","nodeType":"ElementaryTypeName","src":"32386:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32385:9:169"},"scope":84181,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":84116,"nodeType":"FunctionDefinition","src":"32694:199:169","nodes":[],"body":{"id":84115,"nodeType":"Block","src":"32792:101:169","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":84102,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84095,"src":"32809:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84103,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32816:12:169","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74468,"src":"32809:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83159_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":84104,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32829:9:169","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":83158,"src":"32809:29:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":84106,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84095,"src":"32852:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":84107,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84097,"src":"32860:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":84105,"name":"eraIndexAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84091,"src":"32841:10:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74493_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (uint256)"}},"id":84108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32841:22:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"expression":{"id":84109,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84095,"src":"32866:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84110,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32873:9:169","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74488,"src":"32866:16:169","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83257_storage","typeString":"struct Gear.Timelines storage ref"}},"id":84111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32883:3:169","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":83252,"src":"32866:20:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32841:45:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32809:77:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":84101,"id":84114,"nodeType":"Return","src":"32802:84:169"}]},"documentation":{"id":84092,"nodeType":"StructuredDocumentation","src":"32484:205:169","text":" @dev Returns the timestamp when the era started for the given timestamp.\n @param router The router storage.\n @param ts The timestamp for which to get the era start timestamp."},"implemented":true,"kind":"function","modifiers":[],"name":"eraStartedAt","nameLocation":"32703:12:169","parameters":{"id":84098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84095,"mutability":"mutable","name":"router","nameLocation":"32740:6:169","nodeType":"VariableDeclaration","scope":84116,"src":"32716:30:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":84094,"nodeType":"UserDefinedTypeName","pathNode":{"id":84093,"name":"IRouter.Storage","nameLocations":["32716:7:169","32724:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":74493,"src":"32716:15:169"},"referencedDeclaration":74493,"src":"32716:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74493_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":84097,"mutability":"mutable","name":"ts","nameLocation":"32756:2:169","nodeType":"VariableDeclaration","scope":84116,"src":"32748:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84096,"name":"uint256","nodeType":"ElementaryTypeName","src":"32748:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32715:44:169"},"returnParameters":{"id":84101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84100,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84116,"src":"32783:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84099,"name":"uint256","nodeType":"ElementaryTypeName","src":"32783:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32782:9:169"},"scope":84181,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":84139,"nodeType":"FunctionDefinition","src":"33233:467:169","nodes":[],"body":{"id":84138,"nodeType":"Block","src":"33379:321:169","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":84128,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84120,"src":"33451:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84129,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33462:19:169","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":82991,"src":"33451:30:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82986_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},{"expression":{"id":84130,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84120,"src":"33537:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84131,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33548:40:169","memberName":"verifiableSecretSharingCommitmentPointer","nodeType":"MemberAccess","referencedDeclaration":82994,"src":"33537:51:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":84132,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84120,"src":"33608:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33619:4:169","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":83003,"src":"33608:15:169","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},{"expression":{"id":84134,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84120,"src":"33655:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84135,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33666:16:169","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":83006,"src":"33655:27:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82986_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":84126,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84181,"src":"33396:4:169","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84181_$","typeString":"type(library Gear)"}},"id":84127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33401:14:169","memberName":"ValidatorsView","nodeType":"MemberAccess","referencedDeclaration":83019,"src":"33396:19:169","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ValidatorsView_$83019_storage_ptr_$","typeString":"type(struct Gear.ValidatorsView storage pointer)"}},"id":84136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["33430:19:169","33495:40:169","33602:4:169","33637:16:169"],"names":["aggregatedPublicKey","verifiableSecretSharingCommitmentPointer","list","useFromTimestamp"],"nodeType":"FunctionCall","src":"33396:297:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$83019_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}},"functionReturnParameters":84125,"id":84137,"nodeType":"Return","src":"33389:304:169"}]},"documentation":{"id":84117,"nodeType":"StructuredDocumentation","src":"32899:329:169","text":" @dev Converts `Gear.Validators` storage to `Gear.ValidatorsView` struct.\n Note that `validators.map` is passed as `validators.list`.\n @param validators The `Gear.Validators` storage to convert.\n @return validatorsView `Gear.ValidatorsView` struct with the same data as the input storage."},"implemented":true,"kind":"function","modifiers":[],"name":"toView","nameLocation":"33242:6:169","parameters":{"id":84121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84120,"mutability":"mutable","name":"validators","nameLocation":"33273:10:169","nodeType":"VariableDeclaration","scope":84139,"src":"33249:34:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":84119,"nodeType":"UserDefinedTypeName","pathNode":{"id":84118,"name":"Gear.Validators","nameLocations":["33249:4:169","33254:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":83007,"src":"33249:15:169"},"referencedDeclaration":83007,"src":"33249:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"src":"33248:36:169"},"returnParameters":{"id":84125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84124,"mutability":"mutable","name":"validatorsView","nameLocation":"33359:14:169","nodeType":"VariableDeclaration","scope":84139,"src":"33332:41:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$83019_memory_ptr","typeString":"struct Gear.ValidatorsView"},"typeName":{"id":84123,"nodeType":"UserDefinedTypeName","pathNode":{"id":84122,"name":"Gear.ValidatorsView","nameLocations":["33332:4:169","33337:14:169"],"nodeType":"IdentifierPath","referencedDeclaration":83019,"src":"33332:19:169"},"referencedDeclaration":83019,"src":"33332:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$83019_storage_ptr","typeString":"struct Gear.ValidatorsView"}},"visibility":"internal"}],"src":"33331:43:169"},"scope":84181,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":84180,"nodeType":"FunctionDefinition","src":"33997:581:169","nodes":[],"body":{"id":84179,"nodeType":"Block","src":"34155:423:169","nodes":[],"statements":[{"assignments":[84153],"declarations":[{"constant":false,"id":84153,"mutability":"mutable","name":"validators0","nameLocation":"34192:11:169","nodeType":"VariableDeclaration","scope":84179,"src":"34165:38:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$83019_memory_ptr","typeString":"struct Gear.ValidatorsView"},"typeName":{"id":84152,"nodeType":"UserDefinedTypeName","pathNode":{"id":84151,"name":"Gear.ValidatorsView","nameLocations":["34165:4:169","34170:14:169"],"nodeType":"IdentifierPath","referencedDeclaration":83019,"src":"34165:19:169"},"referencedDeclaration":83019,"src":"34165:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$83019_storage_ptr","typeString":"struct Gear.ValidatorsView"}},"visibility":"internal"}],"id":84158,"initialValue":{"arguments":[{"expression":{"id":84155,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84143,"src":"34213:8:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83269_storage_ptr","typeString":"struct Gear.ValidationSettings storage pointer"}},"id":84156,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34222:11:169","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":83265,"src":"34213:20:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage","typeString":"struct Gear.Validators storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$83007_storage","typeString":"struct Gear.Validators storage ref"}],"id":84154,"name":"toView","nodeType":"Identifier","overloadedDeclarations":[84139,84180],"referencedDeclaration":84139,"src":"34206:6:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Validators_$83007_storage_ptr_$returns$_t_struct$_ValidatorsView_$83019_memory_ptr_$","typeString":"function (struct Gear.Validators storage pointer) view returns (struct Gear.ValidatorsView memory)"}},"id":84157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34206:28:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$83019_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}},"nodeType":"VariableDeclarationStatement","src":"34165:69:169"},{"assignments":[84163],"declarations":[{"constant":false,"id":84163,"mutability":"mutable","name":"validators1","nameLocation":"34271:11:169","nodeType":"VariableDeclaration","scope":84179,"src":"34244:38:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$83019_memory_ptr","typeString":"struct Gear.ValidatorsView"},"typeName":{"id":84162,"nodeType":"UserDefinedTypeName","pathNode":{"id":84161,"name":"Gear.ValidatorsView","nameLocations":["34244:4:169","34249:14:169"],"nodeType":"IdentifierPath","referencedDeclaration":83019,"src":"34244:19:169"},"referencedDeclaration":83019,"src":"34244:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$83019_storage_ptr","typeString":"struct Gear.ValidatorsView"}},"visibility":"internal"}],"id":84168,"initialValue":{"arguments":[{"expression":{"id":84165,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84143,"src":"34292:8:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83269_storage_ptr","typeString":"struct Gear.ValidationSettings storage pointer"}},"id":84166,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34301:11:169","memberName":"validators1","nodeType":"MemberAccess","referencedDeclaration":83268,"src":"34292:20:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$83007_storage","typeString":"struct Gear.Validators storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$83007_storage","typeString":"struct Gear.Validators storage ref"}],"id":84164,"name":"toView","nodeType":"Identifier","overloadedDeclarations":[84139,84180],"referencedDeclaration":84139,"src":"34285:6:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Validators_$83007_storage_ptr_$returns$_t_struct$_ValidatorsView_$83019_memory_ptr_$","typeString":"function (struct Gear.Validators storage pointer) view returns (struct Gear.ValidatorsView memory)"}},"id":84167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34285:28:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$83019_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}},"nodeType":"VariableDeclarationStatement","src":"34244:69:169"},{"expression":{"arguments":[{"expression":{"id":84171,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84143,"src":"34392:8:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83269_storage_ptr","typeString":"struct Gear.ValidationSettings storage pointer"}},"id":84172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34401:18:169","memberName":"thresholdNumerator","nodeType":"MemberAccess","referencedDeclaration":83260,"src":"34392:27:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":84173,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84143,"src":"34455:8:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83269_storage_ptr","typeString":"struct Gear.ValidationSettings storage pointer"}},"id":84174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34464:20:169","memberName":"thresholdDenominator","nodeType":"MemberAccess","referencedDeclaration":83262,"src":"34455:29:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":84175,"name":"validators0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84153,"src":"34511:11:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$83019_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}},{"id":84176,"name":"validators1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84163,"src":"34549:11:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$83019_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_struct$_ValidatorsView_$83019_memory_ptr","typeString":"struct Gear.ValidatorsView memory"},{"typeIdentifier":"t_struct$_ValidatorsView_$83019_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}],"expression":{"id":84169,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84181,"src":"34330:4:169","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84181_$","typeString":"type(library Gear)"}},"id":84170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34335:22:169","memberName":"ValidationSettingsView","nodeType":"MemberAccess","referencedDeclaration":83281,"src":"34330:27:169","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ValidationSettingsView_$83281_storage_ptr_$","typeString":"type(struct Gear.ValidationSettingsView storage pointer)"}},"id":84177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["34372:18:169","34433:20:169","34498:11:169","34536:11:169"],"names":["thresholdNumerator","thresholdDenominator","validators0","validators1"],"nodeType":"FunctionCall","src":"34330:241:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$83281_memory_ptr","typeString":"struct Gear.ValidationSettingsView memory"}},"functionReturnParameters":84148,"id":84178,"nodeType":"Return","src":"34323:248:169"}]},"documentation":{"id":84140,"nodeType":"StructuredDocumentation","src":"33706:286:169","text":" @dev Converts `Gear.ValidationSettings` storage to `Gear.ValidationSettingsView` struct.\n @param settings The `Gear.ValidationSettings` storage to convert.\n @return settingsView `Gear.ValidationSettingsView` struct with the same data as the input storage."},"implemented":true,"kind":"function","modifiers":[],"name":"toView","nameLocation":"34006:6:169","parameters":{"id":84144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84143,"mutability":"mutable","name":"settings","nameLocation":"34045:8:169","nodeType":"VariableDeclaration","scope":84180,"src":"34013:40:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83269_storage_ptr","typeString":"struct Gear.ValidationSettings"},"typeName":{"id":84142,"nodeType":"UserDefinedTypeName","pathNode":{"id":84141,"name":"Gear.ValidationSettings","nameLocations":["34013:4:169","34018:18:169"],"nodeType":"IdentifierPath","referencedDeclaration":83269,"src":"34013:23:169"},"referencedDeclaration":83269,"src":"34013:23:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83269_storage_ptr","typeString":"struct Gear.ValidationSettings"}},"visibility":"internal"}],"src":"34012:42:169"},"returnParameters":{"id":84148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84147,"mutability":"mutable","name":"settingsView","nameLocation":"34137:12:169","nodeType":"VariableDeclaration","scope":84180,"src":"34102:47:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$83281_memory_ptr","typeString":"struct Gear.ValidationSettingsView"},"typeName":{"id":84146,"nodeType":"UserDefinedTypeName","pathNode":{"id":84145,"name":"Gear.ValidationSettingsView","nameLocations":["34102:4:169","34107:22:169"],"nodeType":"IdentifierPath","referencedDeclaration":83281,"src":"34102:27:169"},"referencedDeclaration":83281,"src":"34102:27:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$83281_storage_ptr","typeString":"struct Gear.ValidationSettingsView"}},"visibility":"internal"}],"src":"34101:49:169"},"scope":84181,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Gear","contractDependencies":[],"contractKind":"library","documentation":{"id":82933,"nodeType":"StructuredDocumentation","src":"744:770:169","text":" @dev Library for core protocol utility functions for hashing, validation, and consensus-related logic.\n It provides:\n - Canonical hashing functions for protocol entities (messages, value claims, batch/code commitments, state transitions)\n - Validator set management with era-based switching and threshold configuration\n - Signature verification support for FROST aggregated signatures and ECDSA threshold signatures\n with transient storage to prevent double counting of signatures\n - Era and timeline utilities for selecting correct validator sets based on timestamp\n The library acts as a shared foundation for consensus, validation, and commitment verification\n across all protocol components."},"fullyImplemented":true,"linearizedBaseContracts":[84181],"name":"Gear","nameLocation":"1523:4:169","scope":84182,"usedErrors":[82962,82965,82968,82971,82974,82977,82980],"usedEvents":[]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":169}